Mockito jeter l'Exception
@Test(expectedExceptions=DataAccessException.class)
public void testUpdateSubModuleOrderDateExceptionCheck() {
//some code to initialize//
UserSubModuleDao userSubModuleDao = mock(UserSubModuleDao.class);
userModuleServiceImpl.setUserSubModuleDao(userSubModuleDao);
UserSubModule userSubModule=new UserSubModule();
UserSubModuleId userSubModuleId=new UserSubModuleId();
when(userSubModuleDao.findById(any(UserSubModuleId.class),eq(false))).thenThrow(DataAccessException.class);
userModuleServiceImpl.updateSubModuleOrder(data, moduleSysId, userId);
Je veux lancer la Db à l'exception de la couverture de code . son travail si je donne prévu exception : Exception.class
mais pas pour DataAccessException.class
Ma méthode dans la classe d'origine est le suivant:
public void updateSubModuleOrder(Long[] data, Long moduleSysId, Long userId) {
try {
for (int i = 0; i < data.length; i++) {
SubModule subModule=new SubModule();
subModule.setSubModuleId(data[i]);
UserSubModuleId userSubModuleId = new UserSubModuleId();
userSubModuleId.setSubModuleId(subModule);
userSubModuleId.setUserId(userId);
userSubModuleId.setUserModuleId(moduleSysId);
UserSubModule userSubmodule = new UserSubModule();
userSubmodule = userSubModuleDao.findById(userSubModuleId,
false);
catch (DataAccessException ewmsDataExp) {
LOGGER.error(
"Database Exception while updateSubModuleOrder because of {}",
ewmsDataExp.getMessage());
throw new EWMSServiceException(
"Database Exception while updateSubModuleOrder"
+ ewmsDataExp.getMessage());
} catch (Exception exp) {
LOGGER.error(
"System Exception while updateSubModuleOrder because of {}",
exp.getMessage());
throw new EWMSServiceException(
"Database Exception while updateSubModuleOrder"
+ exp.getMessage());
}*
je reçois le message d'erreur
FAILED: testUpdateSubModuleOrderDateExceptionCheck
org.testng.TestException:
**Expected exception org.springframework.dao.DataAccessException but got org.testng.TestException:**
**Expected exception org.springframework.dao.DataAccessException but got java.lang.InstantiationError: org.springframework.dao.DataAccessException**
at org.testng.internal.Invoker.handleInvocationResults(Invoker.java:1497)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1245)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
at org.testng.TestNG.run(TestNG.java:1057)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
et certaines erreurs....
Default test
Exécution des Tests: 1, Failures: 1, Saute: 0
===============================================
===============================================
Pourquoi attendez-vous d'un
DataAccessException
lors de votre classe explicitement prises DataAccessException
et la convertit en quelque chose d'autre?
OriginalL'auteur user2375298 | 2014-03-04
Vous devez vous connecter pour publier un commentaire.
Changer cela:
à
Exemple:
Vous ne pouvez passer à une Classe de référence lorsque ce type d'Exception est un Non-Arg constructeur, et le Printemps exception qui ne l'est pas.
Oui, il dit que la classe ne peut pas être instancié parce qu'il essaie d'utiliser un no-arg constructeur à le faire. Et la classe n'a pas un tel constructeur.
DataAccessException
est une classe abstraite, de sorte que vous ne pouvez pas l'instancier. Vous pouvez utilisernew DataRetrievalFailureException("reason")
au lieuil donne toujours des erreurs..."java.lang.AssertionError: Attendu exception: org.springframework.dao.DataAccessException"...même que j'ai utilisé le " nouveau DataAccessException("..."){}'
OriginalL'auteur Jen S.
Essayer
Mokito.doThrow(new Exception()).quand(mockedObject).methodName(...);
Impressionnant et devrait être accepté!
OriginalL'auteur Shyam_coder