@SolonTest 使用说明
业务型的项目测试,都应该使用 @SolonTest 注解(经常有用户无视它,所以独文再提一下):
- 可以指定启动类
- 如果启动类有 main 函数,则会运行 main 函数(摸拟了真实的项目启动)
- 有 main 函数时,则只会启动一个 SolonApp 实例(其它测试,会不断实例化 SolonTestApp 实例,以实现环境隔离)
- 其它还可以指定应用属性,启动参数,环境等
注解属性说明:
属性 | 说明 | 示例 |
---|---|---|
value | 启动类(默认为空,表示当前类) | |
classes | 启动类(默认为,表示当前类) | |
delay | 延迟秒数(默认为1) | |
env | 环境配置 | |
args | 启动参数 | args="-server.port=9999" |
properties | 应用属性 | properties="solon.app.name=demoapp" |
debug | 是否调试模式(默认为 true) | |
isAot | 是否 AOT 运行(默认为 fasle) |
1、启动 Solon 应用,并测试
以 TestApp 为启动类进行启动。测试一个 service 接口:
@SolonTest(webapp.TestApp.class)
public class DemoTest{
@Inject
UserService userService;
@Test
public void hello() {
assert userService.hello("world").equals("hello world");
}
}
以 TestApp 为启动类进行启动,并指定环境。测试一个 service 接口:
@SolonTest(value=webapp.TestApp.class, env="dev")
public class DemoTest{
@Inject
UserService userService;
@Test
public void hello() {
assert userService.hello("world").equals("hello world");
}
}
2、启动 Solon 应用,并进行 http 接口测试
基于 HttpTester 扩展测试类,方便做 http 本地接口测试:
@SolonTest(webapp.TestApp.class)
public class DemoTest extends HttpTester{
@Inject
UserService userService;
@Test
public void hello() {
//测试注入的Service
assert userService.hello("world").equals("hello world");
}
@Test
public void demo1_run0() {
//HttpTester 提供的请求本地 http 服务的接口
assert path("/demo1/run0/?str=").get().equals("不是null(ok)");
}
@Test
public void demo2_header() throws Exception {
Map<String, String> map = new LinkedHashMap<>();
map.put("address", "192.168.1.1:9373");
map.put("service", "wateradmin");
map.put("meta", "");
map.put("check_type", "0");
map.put("is_unstable", "0");
map.put("check_url", "/_run/check/");
assert path("/demo2/header/")
.header("Water-Trace-Id", "")
.header("Water-From", "wateradmin@192.168.1.1:9373")
.data(map)
.post()
.equals("OK");
}
}