Java 与spark服务器的集成测试

Java 与spark服务器的集成测试,java,testing,server,integration-testing,spark-java,Java,Testing,Server,Integration Testing,Spark Java,我正试着用我的spark服务器。我的目的是测试所有控制器功能。 我考虑过几个选择: 1.设置一个服务器,该服务器将在运行测试时启动,并在测试结束时终止 这个解决方案的问题是,我必须将整个服务器逻辑重写到新服务器上(每次在测试之前设置服务器时,我们都从头开始启动服务器) 从将调用控制器函数并检查其答案的测试类启动控制器(对于启动而非静态调用至关重要,以便为控制器配置正确的db) 这是我最喜欢的一个,但这意味着我必须模仿spark请求。我正在尝试构建一个spark请求和spark响应对象,以发送到我

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

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

  • 从将调用控制器函数并检查其答案的测试类启动控制器(对于启动而非静态调用至关重要,以便为控制器配置正确的db)
  • 这是我最喜欢的一个,但这意味着我必须模仿spark请求。我正在尝试构建一个spark请求和spark响应对象,以发送到我的控制器,但还没有找到一种正确的方法(以及如何发送参数、设置url路由等…)

  • 最后一个是在测试中执行控制器功能的精确逻辑,而不是从请求中获取参数,我将自己启动它们
  • 例如,而不是:

    String username = req.params(""usrName") 
    
    它将是:

    Strimg username = "mark"
    
    但是,该解决方案需要复制大量代码,并且您可能会错过一些代码行,这些代码行可能会使测试成功,而实际上,控制器功能失败(或无法按需要交付)


    您如何看待Integratiom测试spark驱动的服务器?我对新的解决方案也持开放态度。

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

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

    Strimg username = "mark"