。在我的测试类我有类似如下的方法:Junit的(3.8.1)测试,一个异常被抛出(工作在单元测试中,当加入到测试套件失败)我想测试我抛出一个异常,在适当的时候
public void testParseException() {
try {
ClientEntitySingleton.getInstance();
fail("should have thrown exception.");
} catch (RuntimeException re) {
assertEquals(
"<exception message>",
re.getMessage());
}
}
这工作正常(绿坝),每当我运行单元测试单一类。但是,当我将这个测试添加到testSuite时,我得到一个红色的条单元测试失败报告的异常。
还有一件事...它在testSuite中工作,如果它是套件中的第一个测试。实际上,我正在做这些测试中的两个,并且发现如果我将它们作为套件中的前两个测试,一切都很好,但如果在“常规”测试之前进行测试,则会发生此故障。所以我有一个解决方法,但没有真正的答案。
任何想法?
的 “失败”
了java.lang.RuntimeException的Heres'a堆栈跟踪:ProcEntity客户DN = “XXXXXX/XXXX/XXX” 被定义多次。 在com.someco.someprod.clientEntityManagement.ClientEntitySingleton.addClientEntity(ClientEntitySingleton.java:247) 在com.someco.someprod.clientEntityManagement.ClientEntitySingleton.startElement(ClientEntitySingleton.java:264) 在org.apache.xerces.parsers。 AbstractSAXParser.startElement(来源不明) 在org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(来源不明) 在org.apache.xerces.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDispatcher.dispatch(来源不明) 在org.apache.xerces .impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at com.someco.someprod.clientEntityManagement.ClientEntitySingleton.parse(ClientEntitySingleton。的java:216) 在com.someco.someprod.clientEntityManagement.ClientEntitySingleton.reload(ClientEntitySingleton.java:303) 在com.someco.someprod.clientEntityManagement.ClientEntitySingleton.setInputSourceProvider(ClientEntitySingleton.java:88) 在com.someco。 sometest.clientEntityManagement.test.TestClientBase.setUp(TestClientBase.java:17) at com.someco.someprod.clientEntityManagement.test.TestClientEntityDup.setUp(TestClientEntityDup.java:8) at junit.framework.TestCase.runBare(TestCase。 java:125) at junit.framework.TestResult $ 1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at 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) at junit.framework.TestSuite.run(TestSuite.java:203) at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference的.java:128) 在org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 在org.eclipse.jdt.inter nal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal。 junit.runner.RemoteTestRunner.run(RemoteTestRunner。java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
我认为,单身人士有一些残留,但它仍然是在这两种情况下,代码抛出异常。当单独运行时,它会触发我的catch子句并执行assertEquals,而当它是testSuite的一部分时,它永远不会触发assertEquals。 JUnit仅捕获异常并将异常本身报告为测试失败。 – 2010-02-12 02:10:45
当它是测试套件的一部分时,是否会引发非RuntimeException异常(也可能是来自单例的影响)?也许多次初始化单例实际上是造成异常。由于您只捕获RuntimeException,所以测试套件中将显示非RuntimeException并由测试运行器报告。 – 2010-02-12 03:26:23
这是我故意抛出的同一个RuntimeException(并且我在测试中捕获它时是独立的)。在testSuite JUnit在我的catch子句之前得到它,并将其称为测试失败。很奇怪。 – 2010-02-12 11:15:16