【问题标题】:How to run junits in play after Starting play application启动播放应用程序后如何在播放中运行junits
【发布时间】:2015-05-29 05:56:25
【问题描述】:

我有一堆 JUnit 测试并想执行它们。测试访问我的 Play 应用程序 host:port 以调用 REST API。

我使用以下命令运行测试:

./activator  -Dhttp.port=8090 -Dhttps.port=8091  test

我也试过这种方式:

D:\sigma-idp\auth>activator  -Dhttp.port=8090 -Dhttps.port=8091  
[info] Loading project definition from D:\sigma-idp\auth\project
[info] Set current project to auth (in build file:/D:/sigma-idp/auth/)
[auth] $ test

但这里的问题是应用程序尚未启动,JUnit 测试尝试连接到 Play 应用程序以访问我的 REST API。我不确定为什么 test 没有启动应用程序。

如何在触发 JUnit 测试之前启动我的 play 应用程序?

现在我只能在使用 Eclipse 启动应用程序时执行测试。

请推荐!

【问题讨论】:

    标签: java junit playframework playframework-2.0


    【解决方案1】:

    查看文档: https://www.playframework.com/documentation/2.3.x/JavaFunctionalTest 您必须明确启动自己的网络服务器实例进行测试:

    @Test
    public void testInServer() {
    running(testServer(3333), new Runnable() {
        public void run() {
            assertThat(
                WS.url("http://localhost:3333").get().get(timeout).getStatus()
            ).isEqualTo(OK);
        }
    });
    

    }

    您应该考虑直接测试控制器(按照文档中的建议)。

    【讨论】:

    • 我在用java做。从文件中看,我应该如何遵循。此外,我的休息电话需要访问嵌入式数据库,并且仅在启动播放应用程序时才启动数据库。我不知道我怎么能伪造这一切。
    • 正如我所说,我需要访问我的嵌入式数据库,并且只有在播放应用程序启动时才会启动。我已将所有示例测试数据加载到嵌入式数据库中。您能否提供上述示例的一些详细代码,因为我认为我不能使用它,因为它需要围绕它重建,我不确定是什么?
    • 您可以将FakeApplication 类型的第二个参数传递给testServer-函数,其中包含您的数据或配置您的数据库并添加适当的测试数据。这是一个例子:gist.github.com/schaloner/8454626
    • 在我运行测试之前有什么方法可以启动我的播放应用程序......它需要更多的数据库访问权限
    • 也许,如果您需要运行应用程序来进行测试,您应该进行集成或功能测试,而不是单元测试。您可以使用 Gatling (gatling.io) 或 JMeter (jmeter.apache.org) 等工具。我推荐 Gatling - 它更容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    相关资源
    最近更新 更多