当前位置: 首页 > 知识库问答 >
问题:

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

边翔宇
2023-03-14

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

    org.junit.Assume.assumeTrue(false);

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

在每个测试中有两个代码路径会更合适吗,一个用于启用配置,一个用于禁用配置?

此外,现在是引入模拟框架的时候了吗?该框架通过静态方法替换随意注入配置值?谷歌搜索时,我绊倒了https://blog.codecentric.de/en/2011/11/testing-and-mocking-of-static-methods-in-java/这建议使用PowerMock。

另一种方法是为play配置值创建一个静态包装类,并允许在那里随意更改值。

哪种方式更可取?

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

共有1个答案

公西飞鸾
2023-03-14

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

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

 类似资料:
  • 我已经配置了一个配置文件来只运行集成测试,但它仍然在运行所有测试。这是配置: 我试过正则表达式,就像在http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html但我发现这不管用。我怎样才能让测试以IT.java结束?

  • 这是我在StackOverflow中的第一个问题,所以如果问题不准确请原谅。 我创建了一个maven项目。试图通过maven运行testng.xml,但同样的方法不起作用。低于输出 测试用例的执行并不只是显示构建成功。但是,当我尝试使用TestNG套件运行TestNG.xml时,同样的程序运行正常。 当我给出类名为“demo1test.java”时,代码会按预期运行,但我们总是不能给出以test结

  • 我目前正在研究人工神经网络、支持向量机和线性回归方法在基于气象因素(13个因素)的地区水果产量预测中的应用 在WEKA上实现这些方法时,我得到了不好的结果:就像在多层接收器的情况下一样,我的结果是:(我将数据集划分为28个用于训练,8个用于测试)==运行信息=== 方案:weka。分类器。功能。多层Perceptron-L 0.3-M 0.2-N 500-V 0-S 0-E 20-H a-G-R关

  • 在json中传递变量中的值时出现以下问题。encode没有得到例外的响应,但是我在传递值时没有得到正确的响应,我尝试使用map和不同的头无法得到确切的问题。 > 不工作 字符串getvalue=“响应值”;var_body=json。编码({“context”:getvalue}); var res=等待http。post(链接,标题:{“内容类型”:“应用程序/json”,},正文:\正文);

  • 本文向大家介绍iOS 对当前webView进行截屏的方法,包括了iOS 对当前webView进行截屏的方法的使用技巧和注意事项,需要的朋友参考一下 UIWebView和WKWebView的截屏有所区别: UIWebView: UIGraphicsBeginImageContext()方法传入唯一参数,是一个CGSize变量,用来指定图形context的大小,所以获取屏幕截图的时候这个size该是屏

  • 我们在spring boot应用程序中有多个测试类。有些类包含集成测试,有些包含单元测试。这意味着如果我(例如使用maven)让所有测试执行,它将运行所有类中的所有测试。 我希望实现的是,只有在设置了特定的spring概要文件(例如通过application.yml)时,才执行集成测试。例如,我喜欢注释整个测试类,以定义只有在设置了指定的spring概要文件时才执行该类中的测试。如果未设置,则忽略