2013-03-20 53 views
1

如何检查您的程序是否在应用程序内部通过specs2进行测试?例如在Play中你可以用play.Play.isTest()如何查看代码是否在specs2的测试模式下运行?

+0

为什么你需要知道这一点? – 2013-03-20 08:21:23

+0

对于初学者来说,你想在测试时使用不同的数据库。还有其他方法可以实现这一点(我已经完成了这一点),但有时候只需要一个简单的解决方案。例如,我可能希望将敏感数据添加到我的日志信息中,我不希望用户能够通过摆弄外部日志记录配置来查看生产情况。 – Jack 2013-03-20 08:45:31

+0

使代码的行为取决于它在测试模式还是生产模式下运行可能是短期内的简单解决方案......并且可能在长期内容易逆火。 – 2013-03-20 12:46:48

回答

0

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

+0

谢谢,我意识到这是正确的方法(我早些时候使用过Cake),但对于更多的初级开发人员来说,维护会变得有点棘手。我正在寻找一个很好的,但简单的方法来实现这一目标。 – Jack 2013-03-20 16:50:26

+1

在你需要它的地方写一个'if(testMode)... else ...'可能看起来更简单,但这很快变得难以管理。最好是一劳永逸地攀登学习曲线,避免使用更舒适但更不易处理的方法的“技术债务”。我最近经历了这个过程。这次我使用了构造函数注入,这让我感觉更舒适。幸运的是,该系统非常简单,并且没有长期存在。但对于下一个大系统,我要全力以赴。 – 2013-03-20 17:05:54

0

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

相关问题