【问题标题】:How to create a JUnit Run/Debug Configuration for running a Suite in IntelliJ IDEA如何在 IntelliJ IDEA 中创建用于运行套件的 JUnit 运行/调试配置
【发布时间】:2020-01-20 22:35:06
【问题描述】:

我有一个 Java 项目,它根据测试类别定义测试套件,并希望创建一个 JUnit(4.12 版)运行/调试配置以在 IntelliJ IDEA Ultimate 2019.2 中执行特定的测试套件

测试类别/套件定义如下所示:

public class TestCategories {
    public interface ResourceTest {}

    @RunWith(Categories.class)
    @Categories.IncludeCategory(ResourceTest.class)
    @Suite.SuiteClasses(AllTests.class)
    public static class ResourceTestSuite {}

    @RunWith(Categories.class)
    @Categories.ExcludeCategory({ResourceTest.class})
    @Suite.SuiteClasses(AllTests.class)
    public static class UnitTestSuite {}

    @RunWith(ClasspathSuite.class)
    @ClasspathSuite.SuiteTypes({SuiteType.RUN_WITH_CLASSES, SuiteType.TEST_CLASSES, SuiteType.JUNIT38_TEST_CLASSES})
    public static class AllTests {}
}

这作为 ivy 依赖项被拉入我的项目,我无法更改它。我项目中的示例测试类可能如下所示:

public class TestClass {
    @Test
    @Category(ResourceTest.class)
    public void resourceTest() { ... }

    @Test
    public void unitTest() { ... }
}

我可以通过将 Test kind 设置为“Category”并将 Category 设置为“com.mjames.test.category.TestCategories$ResourceTest”来创建成功执行 ResourceTest 类别的 JUnit 运行/调试配置: Run/Debug Configuration

我曾尝试使用测试种类 Category、Pattern 和 Class 来执行 ResourceTestSuite,但没有让它工作。在 ResourceTestSuite 的情况下,它并不是非常重要,因为执行 ResourceTest 类别是等效的,但是 UnitTestSuite 的定义是所有不在 ResourceTest 类别中的测试。如何创建运行/调试配置来执行该测试套件?

【问题讨论】:

    标签: java intellij-idea junit junit4


    【解决方案1】:

    这里是运行配置,适合我运行 ResourceTestSuite

    关于第二种情况: UnitTestSuite 将在 AllTests 类和 UnitTestSuite 的情况下运行> 类本身带有@Category(ResourceTest.class) 注释。否则测试执行将失败,异常如下:

    java.lang.Exception: class 'pack.AllTests' (possibly indirectly) contains itself as a SuiteClass
    

    您也可以尝试使用 @Suite.SuiteClasses(TestClass.class)

    运行 UnitTestSuite

    【讨论】:

    • 我尝试使用“测试种类:类”和“类:com.mjames.test.category.TestCategories$ResourceTestSuite”运行,但出现此错误。 org.junit.runner.manipulation.NoTestsRemainException at org.junit.runners.ParentRunner.filter(ParentRunner.java:394) at org.junit.experimental.categories.Categories.(Categories.java:314) at sun。 reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at ...
    • 能否提供样例工程?
    • 当然,我尝试将一个示例项目放在一起并在此处托管:spaces.hightail.com/space/6gy4i3Km6J
    • 请通过链接查看结构稍有改变的项目:drive.google.com/open?id=12Ugxv21JJIrSQv3jxMSjUMS9yuESs6g9 run by class works there
    猜你喜欢
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    相关资源
    最近更新 更多