在Eclipse中运行JUnit测试时不要执行某些代码
问题描述:
在Tomcat容器中开发应用程序时,我正在使用Eclipse和JUnit 4。容器管理与我们的Oracle数据库的连接。在Eclipse中运行JUnit测试时不要执行某些代码
虽然使用JUnit我有以下问题测试:在测试对象的构造有这样的事情:
public Subject() {
// stuff
FancySingleton.getInstance().getFancy("stuff");
}
不幸的是,方法getFancy()
试图执行一个查询它不能因为JUnit不能在tomcat容器中运行,并以无限循环结束。
我的第一个想法是赞扬代码。其次认为这似乎是一个糟糕的主意。在提交之前,我可以忘记删除评论。
我的第二个想法是要突出Eclipse的代码,以便运行JUnit测试,同时它不执行它。但它需要日食来支持这种方法。
最后我想到了类似预处理器指令的内容。
你的想法是什么?只是传入一个布尔值给构造函数是imho不是处理这种情况的干净方式。
答
你可以模拟FancySingleton,或者你做对了,然后注入一个实现。
我还补充说,调用一个在构造函数中执行Query的方法会使得该类很难测试,并且会使得使用该类的代码更难以测试。 – NamshubWriter 2013-02-26 16:49:33
谢谢你的回复。这是一个非常古老的应用程序,我们试图逐步推进单元测试。在正常的服务中,单身人士几乎从不会在此时开始查询,因为它是一个每天晚上由作业更新的缓存。但是,正如你所说,测试某事。这会自动激发查询,这是测试中的一个难题。 – Joshua 2013-02-27 08:36:37