junit junit_穿越JUnit流
junit junit
關(guān)于JUnit 5遷移的好處之一是,您可以在老式模式下運(yùn)行JUnit 4測(cè)試,并且所有內(nèi)容仍然兼容。 不利的一面是,某些注釋和方法在JUnit 4和JUnit 5中具有相同的名稱(chēng),并且當(dāng)兩組庫(kù)依賴(lài)項(xiàng)都可用時(shí),很容易導(dǎo)入錯(cuò)誤的內(nèi)容并生成不符合要求的測(cè)試。努力工作。
然而,更糟糕的是,當(dāng)沒(méi)有意義的測(cè)試也沒(méi)有通過(guò)構(gòu)建時(shí)。
考慮以下測(cè)試:
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中運(yùn)行,但是在maven構(gòu)建中,它被忽略,因?yàn)?#64;Test來(lái)自錯(cuò)誤的JUnit,并且我沒(méi)有運(yùn)行junit-vintage 。
那么運(yùn)行junit-vintage嗎?
這是怎么發(fā)生的?
就我而言,我已經(jīng)導(dǎo)入了JUnit 5的TestContainers集成,該集成具有對(duì)JUnit 4的傳遞依賴(lài)。這不是很好,但這還不是末日。 但是,我只想在代碼中使用JUnit 5測(cè)試,但是我可能會(huì)意外地用JUnit 4位編寫(xiě)測(cè)試,沒(méi)有人會(huì)注意到!
這些一半形式的測(cè)試從未打算如此,因此我希望它們使構(gòu)建失敗。
什么不起作用
- Checkstyle – checkstyle可以?huà)呙杞沟膇mport語(yǔ)句,但是我不使用它進(jìn)行src/test掃描,并且我們項(xiàng)目的checkstyle規(guī)則與另一個(gè)使用junit-vintage的有效項(xiàng)目共享。
- Macker –復(fù)雜的掃描儀,似乎沒(méi)有開(kāi)箱即用的答案
- Enforcer –這將阻止我包括JUnit 4依賴(lài)項(xiàng)…除了我忍不住允許
我為什么要在乎?
通過(guò)添加自動(dòng)化功能來(lái)發(fā)現(xiàn)已知錯(cuò)誤并告訴您有關(guān)錯(cuò)誤的信息,這比在周?chē)l(fā)出警告要好得多,而且仍然可能出現(xiàn)錯(cuò)誤,從而使事情防錯(cuò)。
就像有人張貼標(biāo)語(yǔ)來(lái)警告該水非常熱,而不是在合適的溫度下提供水一樣!
任何可以賦予我們強(qiáng)制功能的東西都是有好處的。
什么有效
我在GitHub上找到了一個(gè)愚蠢而簡(jiǎn)單的答案。
這個(gè)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 >上面的內(nèi)容對(duì)我有用,可以防止發(fā)生錯(cuò)誤,它可能對(duì)您有用。
我在GitHub中放置了上述代碼的一個(gè)工作示例(由于正確的原因而失敗)。
信用到期
我?guī)缀醴艞壛松鲜鰡?wèn)題。 幸運(yùn)的是,開(kāi)源社區(qū)非常出色。
Radai Rosenblatt于2016年編寫(xiě)了此插件。一個(gè)名為Michal Lozinski的撰稿人于2017年添加了文件模式掃描。
當(dāng)我們初次嘗試使用上述配置時(shí),它不起作用。 文檔沒(méi)有描述如何執(zhí)行此操作,但是閱讀插件的代碼顯示可以使用filePattern 。 但是,它沒(méi)有用。
我今天聯(lián)系了Radai,他更新了該插件的發(fā)行版,現(xiàn)在可以使用了。
沒(méi)有開(kāi)源,這將是不可能的。 沒(méi)有作者承擔(dān)對(duì)陌生人的幫助的責(zé)任,這是不可能的。
謝謝!!!
翻譯自: https://www.javacodegeeks.com/2019/08/crossing-junit-streams.html
junit junit
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的junit junit_穿越JUnit流的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jdbc查询序列_JDBC –模拟序列
- 下一篇: 捡对象引流脚本 内容_对象和索引流