Mr *_*rms 7 java junit unit-testing spark-java
我正在使用Spark Web框架并创建RESTful API.(http://sparkjava.com因为有很多东西叫做"Spark")
我的雇主的标准要求我们编写一系列单元测试,每天自动运行一次,以确认应用程序仍在运行.
Spark很容易使用像Postman这样的工具来测试自己,但是我没有找到任何JUnit使用Spark编写测试的好例子,甚至没有使用它以编程方式编写HTTP请求.
有没有人这样做过?可能吗?
我们开发了一个小型库,便于Spark控制器/端点的单元测试.
此外,版本1.1.3发布在Maven Central Repository中
<dependency>
<groupId>com.despegar</groupId>
<artifactId>spark-test</artifactId>
<version>1.1.3</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我有同样的要求,你和我找到了让它运作的方法.我搜索了Spark源代码,发现了两个有用的类:
这就是我所做的:我创建了一个实现SparkApplication接口的junit测试类.在该接口中,我创建并初始化负责回答http请求的"控制器"(我的应用程序类).在使用@BeforeClass注释的方法中,我使用web.xml初始化Jetty实例,该文件将junit测试类称为SparkApplication和SparkTestUtil
package com.test
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.webapp.WebAppContext;
public class ControllerTest implements SparkApplication {
private static SparkTestUtil sparkTestUtil;
private static Server webServer;
@Override
public void init() {
new Controller(...)
}
@BeforeClass
public static void beforeClass() throws Exception {
sparkTestUtil = new SparkTestUtil(PORT);
webServer = new Server();
ServerConnector connector = new ServerConnector(webServer);
connector.setPort(PORT);
webServer.setConnectors(new Connector[] {connector});
WebAppContext bb = new WebAppContext();
bb.setServer(webServer);
bb.setContextPath("/");
bb.setWar("src/test/webapp/");
webServer.setHandler(bb);
webServer.start();
(...)
}
@AfterClass
public static void afterClass() throws Exception {
webServer.stop();
(...)
}
}
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<filter>
<filter-name>SparkFilter</filter-name>
<filter-class>spark.servlet.SparkFilter</filter-class>
<init-param>
<param-name>applicationClass</param-name>
<param-value>com.test.ControllerTest</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SparkFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
这可以改进,但我认为这是一个很好的起点.也许可以创建一些"火花测试"组件?
希望这对你有用!
| 归档时间: |
|
| 查看次数: |
2088 次 |
| 最近记录: |