java - 适合单元测试的类的一般结构

标签 java unit-testing playframework

我正在开发一个 Play 应用程序,希望在项目深入之前提高我的测试覆盖率。 到目前为止,我在模型层上有相当好的测试覆盖率,但 Controller 往往会在其中包含大量逻辑(积累内容并根据模型结果进行计算)。

有人对如何构建我的应用程序以便所有部分都易于测试有建议吗?我当然可以重构 Controller 中的所有逻辑,并且只为每个 Controller 方法调用一次不同的类,然后只使用 Controller 中的渲染方法,但这似乎有点激烈。

有没有办法可以在 Controller 中运行方法后查看结果,例如

public static void controllerMethod(String a){
    String result = doSomething();
    String calcResult = calculateSomething(a);
    render(result, calcResult)
}

如何测试此方法之后的预期结果和 calcResult 是否是我希望在单元测试中得到的结果?

Play 网站上的所有示例都是关于测试模型层的。我知道我可以对 Controller 运行功能测试,但这对于我想要测试的内容来说有点浅。

如果您对我如何构建我的类以获得易于测试的应用程序有任何建议,请告诉我。

最佳答案

Controller 的任务应该(主要)控制应用程序的流程(接下来显示哪个页面)。为此,您可以使用 selenium tests正在 Play 。

如果您发现自己在 Controller 中添加了大量登录信息,请将其移至相关模型中的方法(如果适用)或创建一个管理复杂部分的中间层(ala 服务)。它们比 Controller 更容易测试,并且允许您在多个 Controller 上重用逻辑(例如,通过浏览器访问 REST API 调用)

关于java - 适合单元测试的类的一般结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7105659/

相关文章:

java - Hazelcast - 从 map 中删除过期的 session

java - 是否有适用于 Windows Mobile 的 JAVA FX 2.0+ 运行时

java - 如何使用 PowerMockito 完全模拟一个类?

java - Android 测试类

java - Play Framework 2.2.x 恢复平面图

java - 当 url 中有冒号时,如何使用 Play Framework 2 使用 Web 服务?

java - 在 Eclipse 中运行程序时,结果显示在 Bsh 窗口而不是 Eclipse 控制台窗口中

c# - 断言 C#(社交)单元测试不使用 HTTP

java - Play Framework 中的 Ebean 是否有 @NotNull 注释?

java - RenameTo 似乎随机失败