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

问题描述 投票:1回答:1

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

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

  1. 从测试类启动控制器(对于启动而非静态调用至关重要,以便为控制器配置正确的数据库)将调用控制器功能并检查其答案。

这是我最喜欢的一个,但这意味着我必须模拟一个spark请求。我正在尝试构建一个spark请求,并激活响应对象,发送到我的控制器,并没有找到一种正确的方法(以及如何发送参数,设置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. 最后一个是在测试中执行控制器功能的确切逻辑,而不是从请求中获取参数,我自己启动它们。

例如,而不是:

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

这将是:

Strimg username = "mark"

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

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

java testing server integration-testing spark-java
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.