我發現了一件奇怪的事情,我很想知道它爲什麼會發生。我使用Junit 4.11的maven surefire插件(2.12.4)。當我想使用@Category
註釋來禁用某些測試時。奇怪的是,它只適用於不延伸TestCase
的測試。對於不擴展的測試,我能夠將註釋僅放在測試方法上運行/禁用,但是對於其他人則禁用類中的所有測試。 實施例: 命令行:僅 mvn test -Dgroups=!testgroups.DisabledTests
運行用於第一片斷測試B:JUnit類別不適用於TestCase?
import static org.junit.Assert.*;
public class DataTest {
@Test
public void testA(){...}
@Test @Category(testgroups.DisabledTests.class)
public void testB(){...}
}
用於與類延伸TestCase
第二種情況下,它將運行沒有測試。
public class DataTest extends TestCase {
@Test
public void testA(){...}
@Test @Category(testgroups.DisabledTests.class)
public void testB(){...}
}
爲什麼會發生?
問題是,第二個類是TestCase的擴展。由於這是JUnit 3樣式,註解@Category不起作用。使用@RunWith(JUnit4.class)對類進行註釋應該會在兩種情況下給出相同的結果 –
謝謝。我已經在問題中寫過這個問題在'TestCase'中,但我不知道爲什麼。你的意思是'TestCase'已經被JUnit 4棄用了嗎? –
JUnit 4通過查找'@ Test'註釋來查找測試。你可以從你的測試類中移除'extends TestCase'。此外,測試方法的名稱不再需要以'test'開頭。你可以自由選擇你想要的任何方法名稱。 –