junit-mockito-exception
我对JUnit是新手。我必须测试一个方法,其中一个方法调用必须抛出一个异常,然后它进入catch块。我需要使用JUnit测试这个流。当我尝试junit-mockito-exception,exception,junit,mockito,Exception,Junit,Mockito,我对JUnit是新手。我必须测试一个方法,其中一个方法调用必须抛出一个异常,然后它进入catch块。我需要使用JUnit测试这个流。当我尝试Mockito.When(method).thenThrow()时,它不会抛出异常,流也不会进入catch块 我要考的班级: public String exceptionMethod() { String return = null; ClassOne one = new ClassOne(); try { //code one
Mockito.When(method).thenThrow()
时,它不会抛出异常,流也不会进入catch块
我要考的班级:
public String exceptionMethod() {
String return = null;
ClassOne one = new ClassOne();
try {
//code
one.methodname(parameters); // this is a method which has to throw exception
return = happy path ;
//code
}
catch(Exception e){
return = exception ;
//code
}
}
JUnit类:
@Mock
Classone one = new Classone();
@Test(expected = RuntimeException.class)
public void testExceptionMethod(){
Mockito.when(one.method).thenThrow(new RuntimeException());
//code
String msg = exceptionMethod();
assertEquals(msg,"exception");
}
你的代码很接近!您需要检查以下几项:
@方法,或者使用了或。这使Mockito有机会初始化@Mock
字段
newclassone()
是一个大问题,因为它确定您没有使用在测试中创建的模拟ClassOne。您需要找出一种方法来确保您的模拟安装在您的测试系统中。一些想法:
- 为测试创建一个方法覆盖,该方法覆盖接受从测试调用的ClassOne
- 在被测系统上创建一个工厂方法,该方法调用
,但可以在测试中重写以返回模拟newclassone()
- 在前面创建ClassOne并将其保存到一个字段中,然后在测试中用mock替换该字段
编辑您的问题并将代码作为代码块发布,适当缩进。此代码混乱不堪,无法编译,首先没有公共关键字。许多其他问题随后出现。