java - 当配置影响方法结果时进行适当的测试?

标签 java junit4 playframework-1.x

我已经开始编写一个类,用于检查向数据库写入和更新对象的权限。对于开发和测试,可以通过播放配置值禁用权限检查。我的第一个想法是在启用权限检查的情况下编写测试。如果在测试运行时禁用检查,我只需通过

禁用测试
    org.junit.Assume.assumeTrue(false);

当然,这意味着在开发中,当禁用权限检查时,测试可能永远不会运行。

在每个测试中使用两个代码路径(一个用于启用配置,一个用于禁用配置)是否更合适?

此外,现在是时候引入一个可以通过静态方法替换随意注入(inject)配置值的模拟框架了吗?当谷歌搜索时,我偶然发现了https://blog.codecentric.de/en/2011/11/testing-and-mocking-of-static-methods-in-java/建议使用 PowerMock 来完成这项工作。

另一种方法是为播放配置值创建一个静态包装类,并允许随意更改其中的值。

哪种方式更好?

  1. 使配置在运行时可配置
  2. 使用模拟框架随意更改(静态)方法

最佳答案

我投票给#1 - 使配置可配置。我在我的一个应用程序中编写了一个“框架”(父类(super class)中的两个方法),以允许测试说出它希望测试的安全角色是什么(并将其放回最后)。这让测试可以选择在独立于所有其他条件的情况下运行哪个角色。

我也对其他类型的配置使用了相同的方法。

关于java - 当配置影响方法结果时进行适当的测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23672149/

相关文章:

java - 我可以从编译时注释向类添加方法吗?

java - hibernate :刷新、驱逐、复制和刷新

java - 我如何在 FreeMarker 模板中连接两个东西?

java - 测试打印结果通过/失败

java - Spring Autowiring 在正在测试的类中不起作用

java - 检索作业和/或进程

playframework - 使用 Java 1.8 运行框架 1.2.7.x

java - 在异步执行时停止函数链执行的最佳实践是什么?

java - junit 测试用例通过,但仍在控制台 java 中打印异常

Play 框架中通过 SSL 的 MongoDB 连接