2013-02-26 104 views
0

在Tomcat容器中开发应用程序时,我正在使用Eclipse和JUnit 4。容器管理与我们的Oracle数据库的连接。在Eclipse中运行JUnit测试时不要执行某些代码

虽然使用JUnit我有以下问题测试:在测试对象的构造有这样的事情:

public Subject() { 
    // stuff 
    FancySingleton.getInstance().getFancy("stuff"); 
} 

不幸的是,方法getFancy()试图执行一个查询它不能因为JUnit不能在tomcat容器中运行,并以无限循环结束。

我的第一个想法是赞扬代码。其次认为这似乎是一个糟糕的主意。在提交之前,我可以忘记删除评论。

我的第二个想法是要突出Eclipse的代码,以便运行JUnit测试,同时它不执行它。但它需要日食来支持这种方法。

最后我想到了类似预处理器指令的内容。

你的想法是什么?只是传入一个布尔值给构造函数是imho不是处理这种情况的干净方式。

回答

3

你可以模拟FancySingleton,或者你做对了,然后注入一个实现。

+1

我还补充说,调用一个在构造函数中执行Query的方法会使得该类很难测试,并且会使得使用该类的代码更难以测试。 – NamshubWriter 2013-02-26 16:49:33

+0

谢谢你的回复。这是一个非常古老的应用程序,我们试图逐步推进单元测试。在正常的服务中,单身人士几乎从不会在此时开始查询,因为它是一个每天晚上由作业更新的缓存。但是,正如你所说,测试某事。这会自动激发查询,这是测试中的一个难题。 – Joshua 2013-02-27 08:36:37

相关问题