Java:模拟代码可以放在测试文件夹中吗?

时间:2016-09-29 05:48:21

标签: java unit-testing mocking

对于Java项目,我们最好将功能代码分隔到“main”文件夹,将单元测试代码分隔到“test”文件夹中。

作为测试的一部分,我们还创建模拟提供程序对象,通常涉及集成/外部调用。我的重点是关于几乎像真正的提供者但功能有限并使用固定/硬编码数据的对象。不是关于使用类似Mickito的框架。

这些对象便于测试,但在应用中没有实际用途。我们可以将这些对象放在“test”文件夹中而不是“main”吗?这也将避免在构建过程中排除这些类的额外步骤。

如果有任何指导原则,请告诉我。

1 个答案:

答案 0 :(得分:0)

是的,你是绝对正确的。这些" stub"对象(而不是模拟)应该放在测试源根目录中。

在某种情况下,您可以将它们放在主文件夹中,即如果要在多个模块之间共享存根。如果需要执行此操作,则应将存根移动到其自己的单独模块的主源根目录。然后可以将该模块做成测试"依赖(maven)或" testCompile"依赖(gradle)仍然将它与生产代码分开(即使它在主文件夹中)。

有时,如果存根有点复杂,为它们编写测试也很有用,以确保它们能够准确地复制真实的行为。当您可能希望将它们移动到另一个模块的主源根目录时,这是另一种情况。

但总的来说,它们不应该与生产代码位于同一个源根目录中。如果没有别的,他们会搞砸你的代码覆盖率统计数据!