我正在使用Mochito,无法返回使用MarshallSendReceive进行的api调用的模拟响应。
以下是服务api调用(其中serviceRequest的类型为ValidateRequest,HeaderComposingCallback实现WebServiceMessageCallback)
public class ValidateClient extends WebServiceGatewaySupport {
...
ValidateResponse serviceResponse = (ValidateResponse) getWebServiceTemplate().marshalSendAndReceive(
serviceRequest, new HeaderComposingCallback(reqId));
..
}
这里是JUnit测试中的模拟,validateResponse是创建的对象,填充了值,但在运行下面的单元测试时,代码总是返回空响应。
@RunWith(MockitoJUnitRunner.class)
public class ValidateServiceTest {
@Mock
WebServiceTemplate template;
....
when(template.marshalSendAndReceive(any(ValidateRequest.class),(WebServiceMessageCallback) any(HeaderComposingCallback.class))).thenReturn(validateResponse);
..
}
预期将接收非空对象的validateResponse。
要找到原因,我们必须查看方法getWebServiceTemplate()
,但肯定有问题(您不是从template
中调用marshalSendAndReceive()
,而是从方法getWebServiceTemplate
中的实例定义为测试类中的字段)。你可以试着嘲笑它:
@RunWith(MockitoJUnitRunner.class)
public class ValidateServiceTest {
@Spy
ValidateService validateService;
@Mock
WebServiceTemplate template;
....
when(validate.getWebServiceTemplate()).thenReturn(template);
when(template.marshalSendAndReceive(any(ValidateRequest.class),(WebServiceMessageCallback) any(HeaderComposingCallback.class))).thenReturn(validateResponse);
..
}
WebServiceGatewaySupport
在其构造函数中创建WebServiceTemplate
的新实例。
确保你打过电话:
public final void setWebServiceTemplate(WebServiceTemplate webServiceTemplate)
将你的模拟注入你的WebServiceGatewaySupport
我使用Maven、Java10、Spring Boot2和JUnit5创建带有单元测试的应用程序。 请帮帮我.
侯会计是个与众不同的人。比如有人向你提意见,认为你错了,你大概会想:我哪里会错呢?肯定是你自己错了吧,理由如此如此这般这般。但是如果一百个人向你提意见,认为你错了,你大概就会想:也许我真的错了。 但侯会计不是这样的,哪怕是全世界的人都向她提意见,她也会固执地认为全世界的人都不对,都不理解她。要是只有一个人向她提意见,又不一样了,她多半认为这人肯定跟自己有仇,一定要狠狠地打击报复。 抱着这样的心理,
从junit4迁移到junit5时 之前我已经添加了所有的测试方法 但我得到的错误为:org.junit.jupiter.api.extension.ParameterResolution异常:没有ParameterResolver注册参数 感谢您的帮助!
我是新来的单元测试,我一直致力于这个教程,我在互联网上找到: http://blog.fedecarg.com/2008/12/27/testing-zend-framework-controllers/ 我的问题是我根本无法执行教程中显示的测试! C :\wamp\www\portailmg\dev\test 从C:\wamp\www\portailmg\dev\tests\phpunit.xm
null
在所有测试之前,需要将数据插入数据库 完成所有测试后,需要从数据库中删除所有数据 在TestNG中,可以使用@BeforeSuite和@AfterSuite来完成这些工作 在JUnit5中如何做这些事情? 在JUnit5中,@BeforeAll注释标记了一个方法,该方法在类中的所有测试之前运行 @AfterAll注释标记要在类中的所有测试之后运行的方法。 我在stackoverflow上找到了以下