使用spark服务器进行集成测试

时间:2017-12-31 10:47:24

标签: java testing server integration-testing spark-java

我正在尝试IT我的火花服务器。我的目的是测试所有控制器功能。 我考虑过几个选择: 1.设置将在运行测试时启动的服务器,并在测试结束时终止。

这个解决方案的问题是我必须将整个服务器逻辑重写到新服务器(我们每次在测试之前设置服务器时都从头开始服务器。)

  1. 从测试类启动一个控制器(对于启动而非静态调用至关重要,以便为控制器配置正确的数据库),它将调用控制器函数并检查它们的答案。
  2. 这是我最喜欢的一个,但这意味着我必须模拟一个火花请求。我试图建立一个火花请求,并激发响应对象,发送到我的控制器,并没有找到一种方法来正确地做到这一点(以及如何发送参数,设置URL路由等。 )

    @Test
     Public void testTry(){
       String expectedName = "mark";
       myController myCtl = new myController()
       Request req = null;
       Response res = null;
    
       String childName =      myCtl.getChildNameFromDB(req, res);
    
      assertEquals(childName, expectedName);
    }
    
    1. 最后一个是在测试中执行控制器功能的确切逻辑,而不是从请求中获取参数,我自己启动它们。
    2. 例如,而不是:

      String username = req.params(""usrName") 
      

      它将是:

      Strimg username = "mark"
      

      但是该解决方案需要复制大量代码,并且您可能会错过一些可能使测试成功的代码行,而实际上,控制器功能失败(或者不按需要提供)。

      您如何看待Integratiom测试火花驱动的服务器?我也很开心新的解决方案。

1 个答案:

答案 0 :(得分:0)

如果你想进行集成测试,我建议使用你的第一种方法,使用随机选择的免费TCP端口和HTTP客户端库(我经常使用优秀的HttpRequest库)。< / p>

这种方法的主要问题是,由于Spark API是静态的,因此您将无法在测试用例/套件之间停止/启动服务器。