Playframework 2.0 如何调试服务器端的Play2单元测试
我有一个这样的单元测试:Playframework 2.0 如何调试服务器端的Play2单元测试,playframework-2.0,Playframework 2.0,我有一个这样的单元测试: @Test public void callRegisterByForm() { // AnyContentAsJson anyContentAsJson = null; running(fakeApplication(), new Runnable() { @Override public void run() { Map<String, String>
@Test
public void callRegisterByForm() {
// AnyContentAsJson anyContentAsJson = null;
running(fakeApplication(), new Runnable() {
@Override
public void run() {
Map<String, String> map = new HashMap<String, String>();
map.put("phoneNumber", "+5103978860");
map.put("countryCode", "us");
Result result = routeAndCall(fakeRequest("POST", "/register").withFormUrlEncodedBody(map));
assertThat(status(result)).isEqualTo(OK);
assertThat(contentType(result)).isEqualTo("application/json");
JsonNode jsonResult = Json.parse(contentAsString(result));
assertThat(jsonResult.get(Config.DEV_REG_STATUS_PARAM).asText()).isEqualTo("OK");
assertThat(jsonResult.get(Config.DEV_PHONE_NUMBER_PARAM).asText()).isEqualTo("+5103978860");
}
});
}
@测试
public void callRegisterByForm(){
//AnyContentAsJson AnyContentAsJson=null;
正在运行(fakeApplication(),new Runnable()){
@凌驾
公开募捐{
Map Map=newhashmap();
地图输入(“电话号码”、“+5103978860”);
地图放置(“国家代码”、“美国”);
结果结果=routeAndCall(fakeRequest(“POST”和“/register”)。带有formurlencodedbody(map));
资产(状态(结果)).isEqualTo(正常);
assertThat(contentType(result)).isEqualTo(“应用程序/json”);
JsonNode jsonResult=Json.parse(contentAsString(result));
assertThat(jsonResult.get(Config.DEV_REG_STATUS_PARAM.astex()).isEqualTo(“OK”);
assertThat(jsonResult.get(Config.DEV_PHONE_NUMBER_PARAM).asText()).isEqualTo(“+5103978860”);
}
});
}
如何测试服务器的控制器?我试图设置一个远程java应用程序,并在控制台上使用“play debug run”,但仍然无法右键单击此测试用例运行,并让服务器的控制器在断点处停止
这是我右键单击测试用例时的图像。它要求我选择要使用的启动器。
MMMh因为我使用的是类型安全堆栈,所以我无法访问
播放
可执行文件
但是,我知道一种在调试模式下启动播放服务器的方法。
实际上我是在我的博客上写的
将使JVM(运行播放服务器)监听一个调试连接
然后,您已经说过了,您设置了一个连接到localhost:9999
在游戏控制台中,您可以选择
- 启动
并调试(如果您对控制器进行了单元测试)test
- 手动测试应用程序(否则)
test.accounts
下的测试类路径中有一个名为MyTest
的测试,则可以执行play debug test only test.accounts.MyTest
。这将只执行MyTests的测试
启动时,将调试器(远程应用程序)连接到jvm,以便遍历代码
另一种方法可能是:
*在一个控制台中播放调试
,
*附加调试器
*打开另一个控制台执行
test only test.accounts.MyTest
任意次数。MMMh因为我使用的是TypeSafe堆栈,所以无法访问play
可执行文件
但是,我知道一种在调试模式下启动播放服务器的方法。
实际上我是在我的博客上写的
将使JVM(运行播放服务器)监听一个调试连接
然后,您已经说过了,您设置了一个连接到localhost:9999
在游戏控制台中,您可以选择
- 启动
并调试(如果您对控制器进行了单元测试)test
- 手动测试应用程序(否则)
test.accounts
下的测试类路径中有一个名为MyTest
的测试,则可以执行play debug test only test.accounts.MyTest
。这将只执行MyTests的测试
启动时,将调试器(远程应用程序)连接到jvm,以便遍历代码
另一种方法可能是:
*在一个控制台中播放调试
,
*附加调试器
*打开另一个控制台执行
test only test.accounts.MyTest
任意次数。这与“播放调试运行”有什么不同?对于“play debug run”,我已经能够启动本地服务器并让Eclipse连接到9999端口进行远程调试。。。很抱歉嗯,对于您的问题,您可能(也许)会看看如何在eclipse中调试specs2测试?当然可以,但是您创建了什么类型的测试?就像我发布的示例一样。它正在使用Play 2 fakeApplication()。是的,它起作用了。首先,在一个控制台中“播放调试”。附加eclipse以侦听localhost:9999。然后运行“仅测试mytest”。这与“播放调试运行”有什么不同?对于“play debug run”,我已经能够启动本地服务器并让Eclipse连接到9999端口进行远程调试。。。很抱歉嗯,对于您的问题,您可能(也许)会看看如何在eclipse中调试specs2测试?当然可以,但是您创建了什么类型的测试?就像我发布的示例一样。它正在使用Play 2 fakeApplication()。是的,它起作用了。首先,在一个控制台中“播放调试”。附加eclipse以侦听localhost:9999。然后运行“仅测试mytest”。
`export SBT_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999`