誰もがこのエラーに遭遇しました
initializationError(junit.framework.TestSuite): テスト クラスは 1 つのコンストラクターのみを持つことができます
使用事例。
TestSuite に 2 つの TestScript があります。TestSuite を動的に作成し、2 つの testScript を追加してこれを呼び出すと、
Result result = JUnitCore.runClasses(clazz);
clazz は TestSuite クラスです。
ただし、2 つの TestScript ごとに JUnitCore.runClasses を呼び出しても問題はありません。
JUnit3を使用しました。
この JUnit エラーで同様の質問があります - IllegalArgumentException:Test クラスはコンストラクターを 1 つしか持つことができませんが、私の場合はテスト スイート クラスを動的に作成する必要があります。理由は、テストスイートに 1 つのテストスクリプトを含めるか、テストスイートに 2 つのテストスクリプトを含めることができるユースケースがあるためです。
更新コード:
public class ScriptTest1 extends TestCase {
private ScriptTest1() { }
public void testMethod1() {
Assert.assertEquals(true, true);
}
}
public class ScriptTest2 extends TestCase {
private ScriptTest2() { }
public void testMethod2() {
Assert.assertEquals(true, true);
}
}
その後、別のクラスで
File file = new File("file to ScriptTest.class");
Class<?> clazz = Class.forName(className, true, Thread.currentThread().getContextClassLoader());
//construct a new test suite
TestSuite ts = new TestSuite("Sample Test Suite with only ScriptTest1");
ts.addTestSuite((Class<? extends TestCase>) clazz);
Result result = JUnitCore.runClasses(ts.getClass());
HashSet<String> failureMethod = new HashSet<String>();
for (Failure failure : result.getFailures()) {
System.out.println("Failure: " + failure.toString());
}
失敗すると次のように出力されます: initializationError(junit.framework.TestSuite): Test class can only have one constructor ただし、これを直接実行すると、正常に実行されます。
File file = new File("file to ScriptTest.class");
Class<?> clazz = Class.forName(className, true, Thread.currentThread().getContextClassLoader());
Result result = JUnitCore.runClasses(clazz);
JUnit4でテストクラスを作成し、JUnit4にも依存するメインプログラムを実行しています。