我在哪里放我的存根?

时间:2013-09-16 20:13:21

标签: java unit-testing junit stub

我一直在使用我的abstract类的存根实现来进行测试。目前,我的单元测试位于test目录旁边的src目录中。

我想知道是否有最佳实践可以放置测试中使用的任何存根。我一直在尝试几件事情,但无论我做什么,我的一部分似乎总是受到干扰。

我尝试过的事情:

  • 使用它们在实际单元测试中声明存根实现。当您必须在多个JUnit类中使用存根时,这一点就会失败。
  • 将存根放在与其父类相同的包中。这似乎是一个糟糕的主意,因为它突然发现测试代码污染src中的包。
  • 将存根类保留在test包结构中的某个位置。这似乎是最合理的选择,但我不确定最好的方法是什么。

请记住,我可能过度思考了这一点。是否有关于可以让我放心的最佳实践的信息?转向模拟框架是解决这个难题的方法吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

由于你给出的原因,第三种选择肯定比其他两种更好。我想参考the Maven directory structure during times like this,它似乎并不意味着与你的第三种选择有任何不同。

我所做的是将存根创建为测试内部的内部类。一旦这变得太乱或需要重用,我将存根放在与抽象类相同的包中,但是在test目录下。


可能值得知道的是,许多项目都在演变为“Builder”对象,其工作原理如下:

Person person = new PersonBuilder().withName("John Doe").withDefaultAddress().build();

你这样做的原因是因为有时需要根据你测试的内容以很多不同的方式创建Person。只有一个PersonStub可能还不够。