私は netbeans で作成された Java プロジェクトを持っています。プロジェクトには、プロジェクトのテスト パッケージにいくつかのテストがあります。
Project->Menu->Test を介してプロジェクトをテストし、すべてのクラス Test ファイルを使用して junit4Suite を作成してテストすると、動作が異なります。
たとえば、1 つの違いは速度です。
- スイートによるテスト: 58 テスト (すべて) には 2.7 秒かかります
- Project->Menu->Test によるテスト: 58 テスト (すべて) は 14.9 秒かかります
Project->Menu->Test を介して netbeans がプロジェクトをテストしているときに、バックグラウンドで何が起こるのですか?
編集:
プロジェクトは非常に小さいため、netbeans がテストを実行するまでにかかる時間は約 1 秒です。
別の違い:
一度しか実行できないメソッドを使用して、別のダミー プロジェクトを作成しました。
public class ScriptThreadWorker {
private static ScriptThreadWorker worker;
private Thread thread;
public static ScriptThreadWorker getWorker() {
if (worker == null) {
worker = new ScriptThreadWorker();
}
return worker;
}
public void runOnScriptThread(Runnable task) {
if (thread != null) {
throw new RuntimeException("you can run once");
}
thread = new Thread(task);
thread.setName("ui-thread");
thread.start();
}
}
そして、junit スイートを使用して 2 つの同一の 2 つのテスト クラスを作成しました。
ScriptThreadWorker1Test.java
public class ScriptThreadWorker1Test {
@Test
public void testRun1() {
ScriptThreadWorker.getWorker().runOnScriptThread(new Runnable() {
@Override
public void run() {
// do nothing
}
});
}
}
ScriptThreadWorker2Test.java
public class ScriptThreadWorker2Test {
@Test
public void testRun1() {
ScriptThreadWorker.getWorker().runOnScriptThread(new Runnable() {
@Override
public void run() {
// do nothing
}
});
}
}
NewTestSuite.java
@RunWith(Suite.class)
@Suite.SuiteClasses({
javaapplication3.ScriptThreadWorker2Test.class,
javaapplication3.ScriptThreadWorker1Test.class})
public class NewTestSuite {
}
Project->Menu->Test からテストを実行すると、「両方のテストに合格しました」
しかし、NewTestSuite.java->メニュー->テストファイルからテストを実行すると、「1つのテストに合格し、1つのテストでエラーが発生しました。1回実行できます」。