我正在开发一个 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/