0

鉴于无法使用@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?
    }
}
4

1 回答 1

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

于 2013-05-22T18:41:31.497 回答