如果无法使用@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
}
对MyTestCase:
public class MyTestCase{
@Test
public void testValidObject(){
MyObject myObject = ...//How to retrieve MyObject here?
}
}
答案 0 :(得分:1)
如果您的对象需要某种形式的验证,您可以存储接收myObject的验证器列表。您的测试看起来像:
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
}
}
您需要一个接口IMyObjectValidator:
interface IMyObjectValidator {
boolean validate(MyObject myObject);
}
您的doService方法需要在创建对象后存储并调用验证器。这实际上是观察者模式,以另一种形式也可能符合您的目的。