我正在尝试IT我的火花服务器。我的目的是测试所有控制器功能。我考虑过几个选项: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);
}
例如,而不是:
String username = req.params(""usrName")
这将是:
Strimg username = "mark"
但是这个解决方案需要复制大量的代码,你可能会错过一些可能使测试成功的代码行,而实际上,控制器功能失败(或者没有按照需要提供)。
您如何看待集成测试火花驱动的服务器?我也很开心新的解决方案。
如果你想进行集成测试,我建议使用你的第一种方法,使用随机选择的免费TCP端口和HTTP客户端库(我经常使用优秀的HttpRequest库来实现这一点)。
这种方法的主要问题是,由于Spark API是静态的,因此您将无法在测试用例/套件之间停止/启动服务器。