java - 在 Web 应用程序中将对象传递给 Junit Test

标签 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

}

我的测试用例:

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/

相关文章:

Java服务器程序耗尽堆,烧毁CPU

java - org.junit.Assert 本身的 JUnit NoClassDefFoundError

java - NetBeans 中的 JUnit

java - @SpringBootTest 需要数据库连接吗?

java - 使用 JUnit 测试休息服务

java - JUnit 测试失败

java - 使用 count 和 limit 时如何获取底层流的大小?

java - 无法在 Android 中使用 Java 从 Bean 类填充 Spinner 值?

java - 我可以使用Cucumber测试使用多种语言的应用程序吗?

java - JSF - 重定向到页面并记住参数 ID 以进行搜索