在项目中组织JUnit测试

时间:2008-10-08 16:56:54

标签: java junit

您认为在项目中组织JUnit测试的最佳实践是什么?为什么?例如,您是否将测试放在他们测试的类旁边?你把它们放在一个单独但平行的包装结构中吗?您是否完全使用不同的组织策略?

5 个答案:

答案 0 :(得分:37)

我使用单独但并行的包结构有几个原因。

  1. 它使测试的组织方式与应用程序代码相同。
  2. 我可以轻松构建应用程序文件以进行分发。
  3. 测试代码仍然可以访问我的应用程序代码。
  4. 将测试代码与应用程序代码混合在一起并不是一团糟。

答案 1 :(得分:8)

我将测试放在一个单独但相似/并行的包结构中。这就是Maven喜欢的东西,它也适用于IDE。我喜欢这种方式,因为我没有将我的测试代码与我的应用程序代码混淆,但我仍然可以访问包私有的东西以进行模拟和状态验证。

答案 2 :(得分:5)

只需使用Maven即可。使用maven,您可以为项目创建默认结构:

mvn archetype:create -DgroupId=com.yoyodyne -DartifactId=UberApp

这将为单元测试以及主项目创建包含空间的Maven's standard directory layout。使用maven,您可以运行单元测试而无需将其打包到jar中,您可以构建一个仅包含应用程序的jar。您还可以为运行,测试和编译时间提供不同的类路径和不同的依赖项。

我觉得最令人不安的是看到周围这么少的人实际上在使用Maven(或者至少是Ant,虽然我更喜欢Maven用于依赖处理。)

答案 3 :(得分:3)

我尊重Maven项目结构,即使我不在项目上使用maven,只因为我已经习惯了。 最佳做法是使用单独的源文件夹,该文件夹与主源文件夹具有相同的包结构。

您的测试特定源(您只编写用于测试的工具)应放在那里,如果您打算将它们与app运行时代码一起使用,则将其移动到主源文件夹中。 这个想法很好地解耦,就像你通过分离持久性和控制来分解效率一样。

答案 4 :(得分:1)

蜥蜴比尔说,

它有助于建立一个并行结构 1)我可以发送src.zip或src.tar.gz并省略单元测试 2)在版本控制系统级别,您可以勾选更改源代码的人员以及仅更改单元测试的人员

“缺点”
如果源测试和单元测试都在同一个包中,则无法密封您的JAR文件(这意味着您需要在准备.JAR并密封之前删除单元测试)