将对象传递给Web应用程序中的Junit Test

时间:2013-05-22 15:40:20

标签: java junit

如果无法使用@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?
    }
}

1 个答案:

答案 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方法需要在创建对象后存储并调用验证器。这实际上是观察者模式,以另一种形式也可能符合您的目的。