【问题标题】:How can you see if your code is running in test mode with specs2?您如何查看您的代码是否在使用 specs2 的测试模式下运行?
【发布时间】:2013-03-20 23:19:07
【问题描述】:

如何检查您的程序是否正在使用 specs2 从应用程序内部进行测试?例如,在 Play 中,您可以使用 play.Play.isTest()

进行检查

【问题讨论】:

  • 你为什么需要知道这些?
  • 对于初学者来说,您希望在测试时使用不同的数据库。还有其他方法可以实现这一点(我已经这样做了),但有时只需要一个简单的解决方案。例如,我可能想将敏感数据添加到我的日志信息中,我不希望用户能够通过摆弄外部日志配置在生产环境中看到这些数据。
  • 让代码的行为取决于它是在测试模式还是在生产模式下运行,短期内可能是一个简单的解决方案……但从长远来看可能很容易适得其反。
  • 我完全同意,谢谢。但有时笨手笨脚的方法是合理的。就我而言,使用蛋糕模式来实现我的目标导致系统复杂化(其他团队成员难以理解)而没有什么好处,因此我将其取出并重新审视解决方案。

标签: scala specs2


【解决方案1】:

使用适当的 DI 技术,例如 Cake(或者甚至在更简单的情况下构造函数参数注入),您可以控制需要以不同方式完成或在测试期间采用变体形式的事情。

【讨论】:

  • 谢谢,我意识到这是正确的方法(我之前使用过 Cake),但对于初级开发人员来说,维护起来可能有点棘手。我正在寻找一种好的但简单的方法来实现这一目标。
  • 在需要的地方写一点if (testMode) ... else ... 似乎更简单,但很快就会变得难以管理。最好一劳永逸地攀登学习曲线,避免更舒适但更难处理的方法的“技术债务”。我最近经历了这个过程。这一次我使用了构造函数注入,这对我来说感觉更舒服。幸运的是,该系统相当简单,也没有长期存在。但是对于下一个大型系统,我会选择完整的蛋糕。
【解决方案2】:

作为一种启发式方法,根据您进行调用的位置,您可能可以填写堆栈跟踪异常并检查 specs2 方法是否被执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-24
    • 2011-07-22
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 2013-08-17
    相关资源
    最近更新 更多