Eclipse和JUnit。测试通过/失败取决于它们的运行位置?

时间:2010-12-16 10:54:55

标签: java junit

您好 我有一个让我发疯的问题。我创建了一个单元测试,试图实例化一个对象。如果不能,则抛出异常

 try{
  testObject = new Target(2,4,true);
 }
 catch(Exception e){
      AssertionError ae = new AssertionError("Unable to create a target");
      ae.initCause(e);
      throw ae;
}

然后我将它放入JUnit测试套件中。如果我选择套件,或单独测试并点击运行,我就没有问题。

另一方面,在Eclipse IDE中,如果我右键单击整个项目文件夹并单击运行JUnit测试,那么传递的测试现在会给我一些错误,例如indexoutofbounds。此测试不访问任何外部文件?那么运行位置如何有所作为呢。 Eclipse在这里做了些什么奇怪的事情吗?

此外,有没有办法让单个测试运行一次,然后当它到达测试套件文件时再次运行。

testCreateTarget(unit.targetTest) java.lang.AssertionError:无法创建目标     at unit.targetTest.testCreateTarget(TargetTest.java:26)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)     at java.lang.reflect.Method.invoke(Unknown Source)     在junit.framework.TestCase.runTest(TestCase.java:154)     在junit.framework.TestCase.runBare(TestCase.java:127)     在junit.framework.TestResult $ 1.protect(TestResult.java:106)     在junit.framework.TestResult.runProtected(TestResult.java:124)     在junit.framework.TestResult.run(TestResult.java:109)     在junit.framework.TestCase.run(TestCase.java:118)     在junit.framework.TestSuite.runTest(TestSuite.java:208)     在junit.framework.TestSuite.run(TestSuite.java:203)     在junit.framework.TestSuite.runTest(TestSuite.java:208)     在junit.framework.TestSuite.run(TestSuite.java:203)     在org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)     在org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)     在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)     在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)     在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)     在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 引起:java.lang.IndexOutOfBoundsException:索引:1,大小:0

1 个答案:

答案 0 :(得分:0)

问题是事先执行的测试改变了程序的状态。似乎有某种连续的测试执行,修改后的变量保持不变