![](/img/trans.png)
[英]Maven will not find junit tests to execute, says it ran 0 tests and the build succeeded
[英]Execute Junit tests using Maven
我在src / test / java下有兩個要運行的類: scen1.class
和scen2.class
。 這兩個都有@Test
注釋方法。
我有一個稱為另一個類JunitDefinitions.class
一個只有@Before
, @After
, @BeforeClass
和@AfterClass
方法(無@Test)。 這也在src / test / java下,但是在不同的軟件包下。
假設我具有默認的pom.xml
,我應該在其中添加什么才能執行所有這三個類?
<includes>
的配置,因為它中描述真實文檔 。 默認情況下,Surefire插件將自動包含具有以下通配符模式的所有測試類:
"**/Test*.java" - includes all of its subdirectories and all Java filenames that start with "Test".
"**/*Test.java" - includes all of its subdirectories and all Java filenames that end with "Test".
"**/*Tests.java" - includes all of its subdirectories and all Java filenames that end with "Tests".
"**/*TestCase.java" - includes all of its subdirectories and all Java filenames that end with "TestCase".
除了將您的類重命名為@viniciusartur所建議的Scen1Test.java和Scen2Test.java之類的名稱外,這還將有助於Maven識別測試類以使用surefire-plugin執行它們。
這里要注意的另一點是,由於其中的原因@Before
, @BeforeClass
, @After
等不無獨立執行@Test
方法是,只有
Test注釋告訴JUnit, 可以將它附加到的public void方法作為測試用例運行 。 為了運行該方法,JUnit首先構造一個新的類實例,然后調用帶注釋的方法。
使用@Before注釋公共void方法會使該方法在Test方法之前運行。 超類的@Before方法將在當前類的方法之前運行。
因此可以推斷,在處理注釋時,如果/src/test/java
下的類中不存在@Test注釋(相對於基於maven的問題),則沒有其他有意義的注釋需要處理。
只是要注意,如果使用包含@Test method
另一個SubClassTest.java擴展此類,則將執行所有這些方法。 由於它們是根據對( @Test
)進行處理而處理的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.