鉴于无法使用 @Parameters 在 JUnit 类中创建对象,如何将对象传递给 JUnit 测试?
事实上,该对象是由 Web 应用程序外部的服务动态创建的,我想在创建剩余进程(使用该对象)所需的大量资源之前测试它是否有效。
编辑:
public void doService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
MyObject myObject = ... //Get Object from external service
JUnitCore runner = ... //Create runner
runner.run(MyTestCase.class); //throws exception when objet is not valid
...//Create the heavy resources and delegate to custom process
}
我的测试用例:
public class MyTestCase{
@Test
public void testValidObject(){
MyObject myObject = ...//How to retrieve MyObject here?
}
}
最佳答案
如果您的对象需要某种形式的验证,您可以存储接收 myObject 的 validator 列表。您的测试将类似于:
public class MyTestCase{
@Test
public void testValidObject(){
Service service = new Service();
service.addValidator(new IMyObjectValidator() {
boolean validate(MyObject myObject) {
// some assertions here
return true;
}
});
service.doService(mockRequest, mockResponse);
// some final assertions here
}
}
您需要一个接口(interface) IMyObjectValidator:
interface IMyObjectValidator {
boolean validate(MyObject myObject);
}
您的 doService 方法需要在对象创建后存储并调用 validator 。这实际上是观察者模式,它以另一种形式也可能满足您的目的。
关于java - 在 Web 应用程序中将对象传递给 Junit Test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16696055/