Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JUnit类别没有';不能使用测试用例吗?_Java_Maven_Junit_Maven Surefire Plugin - Fatal编程技术网

Java JUnit类别没有';不能使用测试用例吗?

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

我发现了一件奇怪的事情,我很想知道为什么会发生。我在JUnit4.11中使用maven surefire插件(2.12.4)。当我想使用
@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
开头。您可以自由选择所需的任何方法名称。