我在 netbeans 上创建了一个 java 项目,该项目在项目的测试包中有一些测试。
当我通过 Project->Menu->Test 测试项目并通过使用所有类测试文件创建 junit4Suite 进行测试时,我有不同的行为。
例如,一个区别是速度:
- 通过套件进行测试:58 次测试(全部)需要 2.7 秒
- 通过 Project->Menu->Test 进行测试:58 test(all) 需要 14.9 秒
当 netbeans 通过 Project->Menu->Test 测试项目时,后台会发生什么?
编辑:
该项目非常小,因此 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
}
});
}
}
新测试套件.java
@RunWith(Suite.class)
@Suite.SuiteClasses({
javaapplication3.ScriptThreadWorker2Test.class,
javaapplication3.ScriptThreadWorker1Test.class})
public class NewTestSuite {
}
当我通过 Project->Menu->Test 执行测试时:“两个测试都通过了”
但是当我通过 NewTestSuite.java->Menu->Test 文件执行测试时:“1 个测试通过,1 个测试导致错误,你可以运行一次”。