Java JUnit类别没有';不能使用测试用例吗?
我发现了一件奇怪的事情,我很想知道为什么会发生。我在JUnit4.11中使用maven surefire插件(2.12.4)。当我想使用Java JUnit类别没有';不能使用测试用例吗?,java,maven,junit,maven-surefire-plugin,Java,Maven,Junit,Maven Surefire Plugin,我发现了一件奇怪的事情,我很想知道为什么会发生。我在JUnit4.11中使用maven surefire插件(2.12.4)。当我想使用@Category注释来禁用一些测试时。奇怪的是,它只能在不扩展TestCase的测试中正常工作。对于不扩展TestCase的测试,我只能将注释放在要运行/禁用的测试方法上,但对于其他测试,它会禁用类中的所有测试。 例子: 命令行: mvn测试-Dgroups=!testgroups.DisabledTests仅对第一个代码段运行测试B: import stat
@Category
注释来禁用一些测试时。奇怪的是,它只能在不扩展TestCase
的测试中正常工作。对于不扩展TestCase
的测试,我只能将注释放在要运行/禁用的测试方法上,但对于其他测试,它会禁用类中的所有测试。
例子:
命令行:
mvn测试-Dgroups=!testgroups.DisabledTests
仅对第一个代码段运行测试B:
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的扩展。由于这是JUnit3样式,注释@Category不起作用。在这两种情况下,用@RunWith(JUnit4.class)注释类应该会得到相同的结果 另一个是:
JUnit4通过查找
@test
注释来查找测试。您可以从测试类中删除扩展测试用例
。此外,测试方法的名称不再必须以test
开头。您可以自由选择所需的任何方法名称
以下人员在评论中给出了解决方案: 问题是第二个类是TestCase的扩展。由于这是JUnit3样式,注释@Category不起作用。在这两种情况下,用@RunWith(JUnit4.class)注释类应该会得到相同的结果 另一个是:
JUnit4通过查找
@test
注释来查找测试。您可以从测试类中删除扩展测试用例
。此外,测试方法的名称不再必须以test
开头。您可以自由选择所需的任何方法名称
问题是,第二个类是TestCase的扩展。由于这是JUnit3样式,注释@Category不起作用。在两种情况下,用@RunWith(JUnit4.class)注释类应该得到相同的结果。我已经在问题中写道,问题在“TestCase”中,但我不知道为什么。您是说JUnit4不推荐使用“TestCase”吗?JUnit4通过查找
@test
注释来查找测试。您可以从测试类中删除扩展测试用例
。此外,测试方法的名称不再必须以test
开头。您可以自由选择所需的任何方法名称。问题是,第二个类是TestCase的扩展。由于这是JUnit3样式,注释@Category不起作用。在两种情况下,用@RunWith(JUnit4.class)注释类应该得到相同的结果。我已经在问题中写道,问题在“TestCase”中,但我不知道为什么。您是说JUnit4不推荐使用“TestCase”吗?JUnit4通过查找@test
注释来查找测试。您可以从测试类中删除扩展测试用例
。此外,测试方法的名称不再必须以test
开头。您可以自由选择所需的任何方法名称。