java - 我如何使用集成测试运行器在我的 IntelliJ IDEA 项目中运行除以 "IntegrationTest"结尾的那些之外的所有 JUnit 单元测试?

标签 java unit-testing reflection junit intellij-idea

我基本上想在我的 IntelliJ IDEA 项目中运行所有 JUnit unit 测试(不包括 JUnit 集成测试),使用 JUnit 的静态 suite() 方法。为什么要使用静态 suite() 方法?因为我随后可以使用 IntelliJ IDEA 的 JUnit 测试运行器来运行我的应用程序中的所有单元测试(并通过命名约定轻松排除所有集成测试)。到目前为止的代码如下所示:

package com.acme;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class AllUnitTests extends TestCase {

    public static Test suite() {
        List classes = getUnitTestClasses();
        return createTestSuite(classes);
    }

    private static List getUnitTestClasses() {
        List classes = new ArrayList();
        classes.add(CalculatorTest.class);
        return classes;
    }

    private static TestSuite createTestSuite(List allClasses) {
        TestSuite suite = new TestSuite("All Unit Tests");
        for (Iterator i = allClasses.iterator(); i.hasNext();) {
            suite.addTestSuite((Class<? extends TestCase>) i.next());
        }
        return suite;
    }

}

应该重写方法 getUnitTestClasses() 以添加所有扩展 TestCase 的项目类,除非类名以“IntegrationTest”结尾。

例如,我知道我可以在 Maven 中轻松完成此操作,但我需要在 IntelliJ IDEA 中完成此操作,以便我可以使用集成测试运行器 - 我喜欢绿色条:)

最佳答案

如何将每个主要的 junit 测试组放入它们自己的根包中。我在我的项目中使用这个包结构:

test.
  quick.
    com.acme
  slow.
    com.acme

无需任何编码,您可以设置 IntelliJ 来运行所有测试,只运行快速测试或只运行慢速测试。

关于java - 我如何使用集成测试运行器在我的 IntelliJ IDEA 项目中运行除以 "IntegrationTest"结尾的那些之外的所有 JUnit 单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/176913/

相关文章:

java - 什么代码以及 java.lang.reflect.Array 在运行时创建一个新数组?

java - 如何在保持安全性的同时提供 XSLT 实用程序

javascript - 如何在 Jasmine 中模拟 DOM 元素以便 Controller 可以访问它?

c# - TDD:EF Core In Memory Provider 是否验证引用约束?

java - 如何在java中创建合成字段?

C#:为什么我的应用程序不关闭其文件句柄?

JAVA 正则表达式 : How do I find the exact matching group?

java - 如何使用 API 和 Glide 查看图像信息何时丢失

Java日期排序方法?

c# - 如何查找包含 nunit 测试的 dll 文件