你好
我有一个使我疯狂的问题。我创建了一个试图实例化对象的单元测试。如果不能,则抛出异常
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:无法创建目标
在unit.targetTest.testCreateTarget(TargetTest.java:26)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)
在java.lang.reflect.Method.invoke(未知来源)
在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
最佳答案
问题是事先执行的测试改变了程序的状态。似乎有某种持续的测试执行过程,在整个过程中都保留了修改后的变量
关于java - Eclipse和JUnit。根据通过的地方测试通过/失败?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4459981/