के साथ अपवाद नहीं कर रहा है मैं में अपेक्षित अपवाद के परीक्षण के लिए @Test (अपेक्षित = RuntimeException.class) एनोटेशन का उपयोग करने का प्रयास कर रहा हूं।जूनिट 4: अपेक्षित = स्प्रिंग
@Test(expected = RuntimeException.class)
public void testSaveThrowsRuntimeException(){
User user = domain.save(null);
}
और मेरे विधि को बचाने के लिए इस तरह सरल:
public User save(User newUser) {
if(newUser == null) {
throw new RuntimeException();
}
//saving code goes here
}
कोड डिबगिंग के बाद मैं उम्मीद लेकिन इसकी वसंत में बीच में कहीं खाया हो रही है के रूप में है कि कोड अपवाद फेंक पाया मेरे कोड इस प्रकार है ढांचे वर्गों।
org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1031)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:709)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:678)
at org.springframework.test.context.transaction.TransactionalTestExecutionListener$TransactionContext.endTransaction(TransactionalTestExecutionListener.java:504)
at org.springframework.test.context.transaction.TransactionalTestExecutionListener.endTransaction(TransactionalTestExecutionListener.java:277)
at org.springframework.test.context.transaction.TransactionalTestExecutionListener.afterTestMethod(TransactionalTestExecutionListener.java:170)
at org.springframework.test.context.TestContextManager.afterTestMethod(TestContextManager.java:344)
at org.springframework.test.context.junit4.SpringMethodRoadie.runAfters(SpringMethodRoadie.java:307)
at org.springframework.test.context.junit4.SpringMethodRoadie$RunBeforesThenTestThenAfters.run(SpringMethodRoadie.java:338)
at org.springframework.test.context.junit4.SpringMethodRoadie.runWithRepetitions(SpringMethodRoadie.java:217)
at org.springframework.test.context.junit4.SpringMethodRoadie.runTest(SpringMethodRoadie.java:197)
at org.springframework.test.context.junit4.SpringMethodRoadie.run(SpringMethodRoadie.java:143)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:142)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.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)
Caused by: javax.transaction.RollbackException
at org.objectweb.jotm.TransactionImpl.commit(TransactionImpl.java:245)
at org.objectweb.jotm.Current.commit(Current.java:488)
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1028)
... 23 more
और मुझे यकीन है:
मैं (कैच ब्लॉक की कोशिश), लेकिन अभी भी मैं परीक्षा में है कि अपवाद को पकड़ने के लिए सक्षम नहीं हूँ और परीक्षण JUnit की runafter विधि में त्रुटियों फेंकने रहता है पुराना तरीका के साथ एक ही करने की कोशिश की यह उस रनटाइम अपवाद के कारण है जिसे मैं सहेजने में फेंक रहा हूं लेकिन इसे पकड़ने में सक्षम नहीं हूं या अपेक्षित खंड के साथ परीक्षण पास नहीं कर रहा हूं।
किसी को भी कोई विचार है कि क्या गलत हो रहा है?
यदि वसंत हमेशा अपवाद पकड़ लेता है, तो आप ऐसा क्यों नहीं करना चाहते हैं? क्या यह अपेक्षित व्यवहार नहीं है (भले ही आप * क्या * अपेक्षित नहीं थे) –
हाँ यह सच है लेकिन यह बाद में कंसोल पर त्रुटि फेंकता है। तो मैं इसे खुद पकड़ना चाहता हूँ। – ravinikam