我基本上想使用 JUnit 的 static suite() 方法在我的 IntelliJ IDEA 项目中运行所有 JUnit单元测试(不包括 JUnit 集成测试)。为什么使用静态套件()方法?因为然后我可以使用 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 中做到这一点,这样我才能使用集成测试运行器 - 我喜欢绿色条 :)