junit junit_穿越JUnit流
junit junit
關于JUnit 5遷移的好處之一是,您可以在老式模式下運行JUnit 4測試,并且所有內容仍然兼容。 不利的一面是,某些注釋和方法在JUnit 4和JUnit 5中具有相同的名稱,并且當兩組庫依賴項都可用時,很容易導入錯誤的內容并生成不符合要求的測試。努力工作。
然而,更糟糕的是,當沒有意義的測試也沒有通過構建時。
考慮以下測試:
import org.junit.Test; import org.junit.jupiter.api.BeforeEach; import static org.junit.Assert.assertEquals; public class AccidentalJUnit4Test { @BeforeEach public void beforeEach() { } @Test public void test() { assertEquals( 1 , 1 ); } }這是JUnit 5的注釋和JUnit 4的可怕的湯。 它在IDE中運行,但是在maven構建中,它被忽略,因為@Test來自錯誤的JUnit,并且我沒有運行junit-vintage 。
那么運行junit-vintage嗎?
這是怎么發生的?
就我而言,我已經導入了JUnit 5的TestContainers集成,該集成具有對JUnit 4的傳遞依賴。這不是很好,但這還不是末日。 但是,我只想在代碼中使用JUnit 5測試,但是我可能會意外地用JUnit 4位編寫測試,沒有人會注意到!
這些一半形式的測試從未打算如此,因此我希望它們使構建失敗。
什么不起作用
- Checkstyle – checkstyle可以掃描禁止的import語句,但是我不使用它進行src/test掃描,并且我們項目的checkstyle規則與另一個使用junit-vintage的有效項目共享。
- Macker –復雜的掃描儀,似乎沒有開箱即用的答案
- Enforcer –這將阻止我包括JUnit 4依賴項…除了我忍不住允許
我為什么要在乎?
通過添加自動化功能來發現已知錯誤并告訴您有關錯誤的信息,這比在周圍發出警告要好得多,而且仍然可能出現錯誤,從而使事情防錯。
就像有人張貼標語來警告該水非常熱,而不是在合適的溫度下提供水一樣!
任何可以賦予我們強制功能的東西都是有好處的。
什么有效
我在GitHub上找到了一個愚蠢而簡單的答案。
這個Maven Grep插件效果很好:
< build > < plugins > <!-- grep maven plugin set to filter naughty JUnit4 stuff --> < plugin > < groupId >net.radai</ groupId > < artifactId >grep-maven-plugin</ artifactId > < version >1.1</ version > < executions > < execution > < goals > < goal >grep</ goal > </ goals > < phase >test</ phase > < configuration > < greps > < grep > < failIfFound >true</ failIfFound > < filePattern >src/test/java/**/*.java</ filePattern > < grepPattern >import\s+(static\s+)?org\.junit\.(Assert|Test|Before|After|AfterClass|Assume|BeforeClass|ClassRule|Rule|FixMethodOrder|Ignore|Rule)</ grepPattern > < outputPattern >Found JUnit 4 imports in file ${fileName} at line ${lineNumber} : ${line}</ outputPattern > </ grep > </ greps > </ configuration > </ execution > </ executions > </ plugin > </ plugins > </ build > <!-- you also need to add the distribution repo --> < pluginRepositories > < pluginRepository > < id >ossrh</ id > < url > https://oss.sonatype.org/content/groups/public </ url > </ pluginRepository > </ pluginRepositories >上面的內容對我有用,可以防止發生錯誤,它可能對您有用。
我在GitHub中放置了上述代碼的一個工作示例(由于正確的原因而失敗)。
信用到期
我幾乎放棄了上述問題。 幸運的是,開源社區非常出色。
Radai Rosenblatt于2016年編寫了此插件。一個名為Michal Lozinski的撰稿人于2017年添加了文件模式掃描。
當我們初次嘗試使用上述配置時,它不起作用。 文檔沒有描述如何執行此操作,但是閱讀插件的代碼顯示可以使用filePattern 。 但是,它沒有用。
我今天聯系了Radai,他更新了該插件的發行版,現在可以使用了。
沒有開源,這將是不可能的。 沒有作者承擔對陌生人的幫助的責任,這是不可能的。
謝謝!!!
翻譯自: https://www.javacodegeeks.com/2019/08/crossing-junit-streams.html
junit junit
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的junit junit_穿越JUnit流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jdbc查询序列_JDBC –模拟序列
- 下一篇: 捡对象引流脚本 内容_对象和索引流