1

我有一个这样的单元测试:

    @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");
            }
        });

    }

如何测试服务器的控制器?我尝试设置一个远程 java 应用程序并在控制台上使用“播放调试运行”,但仍然无法右键单击此测试用例来运行并使服务器的控制器在断点处停止

这是我右键单击测试用例时的图像。它要求我选择要使用的启动器。 在此处输入图像描述

4

1 回答 1

1

MMMh 因为我使用的是 TypeSafe 堆栈,所以我无权访问play可执行文件。

但是,我知道一种在调试模式下启动播放服务器的方法。其实我在这里写在我的博客上。

`export SBT_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9999` 

会让JVM(运行你的Play服务器)监听一个调试连接。

之后,您已经说过,您设置了一个远程应用程序连接到localhost:9999

在播放控制台中,您可以选择

  • 启动test和调试(如果您对控制器进行了单元测试)
  • 手动测试您的应用程序(否则)

编辑

与在 Eclipse 中运行测试相关,我看不到该怎么做,因为它依赖于类路径,可能还有一些配置。

但是可以做的是执行play debug test-only test.accounts.MyTest,假设您MyTest在包下的测试类路径中调用了一个测试test.accounts。这将只执行 MyTests 的测试。

在开始时将调试器(远程应用程序)附加到 jvm 以便遍历代码。

另一种方法可能是: *play debug在一个控制台中, * 附加调试器 * 打开另一个控制台以执行任意test-only test.accounts.MyTest多次。

于 2012-06-04T13:16:06.313 回答