java - JUnit 测试用例真的应该放在被测类旁边吗?

标签 java junit

这里的 C# 开发人员正在研究基本的 Java 示例。在我看到的教程中,JUnit 测试用例似乎与被测类打包在一起。是对的吗?在 C# 中,我们创建了一个新的测试项目 - 在 Java 中,通用模式肯定是相似的吧?

最佳答案

正如我在评论中所说,现在的事实标准是 Maven 结构,其中测试位于相同的 package(C# 中的命名空间)但位于不同的源根目录下(src/main/javasrc/test/java),尽管您可以自由地将测试放在任何您想要的地方。

然而,将测试放在同一个包中有一些好处,因为 Java 可见性规则意味着测试可以访问 protectedpackage private 方法,允许它是对被测类的更多安葬(这不是你应该一直依赖的东西,但它时不时地有用)。

无论如何,我离题了,结构看起来像这样:

my-project
+ src
  + main
  | + java
  |   + com
  |     + company
  |       + MyNewClass
  + test
    + java
      + com
        + company
          + MyNewClassTest

在 Java 世界中,拥有外部构建工具是常态,Maven是这个月的当前 flavor 。大多数 IDE 都支持它,它们在与 Maven 同步时会识别此结构。项目文件 (pom)。

这并不意味着如果你不使用 Maven 就不能使用这个结构,您只需手动将其他源代码根目录添加到 IDE 项目/模块。

在 IntelliJ 中,您可以在源选项卡上的项目设置 -> 模块中执行此操作。您在 Eclipse 中做了类似的事情,但不确定确切的路径(肯定有人会在评论中添加方法:-)

关于java - JUnit 测试用例真的应该放在被测类旁边吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23547229/

相关文章:

java - 从Java中的另一个对象获取空值,但在自己的类中获取值

scala - intellij Junit 为 scala 生成测试类

android - 在 Android Studio 中运行仪器测试的问题;未找到类 "android.test.runner.AndroidJUnitRunner"

java - 如何测试使用 Pageable 对象的 REST Controller

java - JDBC MySQL 仅在测试类中工作

java - 解析 JSON 响应

java - 从gradle中的jar中省略类文件

java - 有人可以解释为什么我使用 Timer 时会出现此错误吗?

catalina.sh 中设置的 JAVA_OPTS 不适用于 TOMCAT 私有(private)实例

ant - 如何通过 Ant 显示 jUnit 错误