首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java单元测试,目录布局

Java单元测试,目录布局
EN

Stack Overflow用户
提问于 2009-10-08 20:43:34
回答 4查看 78K关注 0票数 81

在为Java代码构建一套单元测试时,是否有关于将测试代码放在与源代码相关的位置的约定?

例如,如果我有一个包含一堆.java源文件的目录/java,那么将测试用例放在/java本身中还是使用/java/test之类的内容更好?

如果选择后者,那么当类的private /protected成员在包之外不可用时,如何测试代码的内部结构?

EN

回答 4

Stack Overflow用户

发布于 2009-10-08 20:50:16

我建议遵循Apache Software Foundation's standard directory structure,它会产生以下结果:

代码语言:javascript
复制
module/
  src/
    main/
      java/
    test/
      java/

这使测试与源代码分离,但在目录结构中处于同一级别。如果你通读Apache是如何定义它们的结构的,你会发现它也有助于划分其他的关注点,包括资源,配置文件,其他语言等。

此结构还允许单元测试测试被测单元的包和受保护级别的方法,假设您将测试用例放在与它们测试的包相同的包中。关于测试私有方法--我不会费心的。其他的东西,无论是公共的,包的,还是受保护的,都会调用它们,你应该能够获得完整的测试覆盖范围来测试这些东西。

顺便说一下,上面的链接指向Apache的标准构建工具Maven。他们的每个Java项目都符合这个标准,我遇到的每个用Maven构建的项目也是如此。

票数 125
EN

Stack Overflow用户

发布于 2009-10-08 20:49:46

大多数时候是这样做的:

代码语言:javascript
复制
<SOME_DIR>/project/src/com/foo/Application.java
<SOME_DIR>/project/test/com/foo/ApplicationTest.java

因此,您可以将它们分开,并且仍然可以测试包/受保护的功能,因为测试在同一个包中。

你不能测试私有的东西,除非它自己在类中声明。

在交付时,您只需打包由src生成的.class,而不是测试。

票数 8
EN

Stack Overflow用户

发布于 2009-10-09 15:41:45

实际上,将你的生产和测试项目分成两个独立的实体是很有意义的,但在两个项目中具有相同的包结构。

因此,如果我有一个项目'my- project‘,我还创建了'my-project-test',所以我有以下目录结构:

代码语言:javascript
复制
my-project
  +--- src/com/foo
my-project-test
  +---test/com/foo

此方法可确保测试代码依赖项不会污染生产代码。

在我个人看来,包的私有和受保护的方法应该像公共方法一样进行测试。因此,我希望我的测试类与生产类位于同一个包中。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1540324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档