如何在Maven项目中使用JUnit Test Runners?

问题描述 投票:2回答:2

我创建了具有依赖性的quickstart maven项目:

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

我有源类:

main.java.test.App

和测试类:

test.java.test.AppTest

所以当我尝试在App类中创建Result对象并使用JUnitCore时,它会返回编译错误,因为in junit依赖是“test”。如果我从依赖项中更改或删除作用域,则无法从App访问AppTest类。

使用Maven配置的Test Runners是不可能的?

java maven junit
2个回答
2
投票

您无法从App类访问AppTest。

junit依赖项有一个测试范围,这意味着junit依赖项(库)仅用于编译和运行测试,因此无法从主代码(通常位于src / main中的App)访问它们。

您的所有测试用例都应位于src / test / java中,并且在运行mvn testmvn package(或任何将测试作为中间目标的目标)时由maven运行


2
投票

你永远不应该从App类访问Test类(坦率地说,你不能)。

测试代码与主代码完全分开。测试代码可以访问您的主代码,但您的主代码永远不能访问您的测试代码。

这个很重要。您的测试代码应该验证您的真实代码。如果主代码可以访问测试代码,那么您可能会破坏您尝试验证的内容。

测试依赖项被标记为“测试”范围,以确保Maven知道它们与主代码无关。

© www.soinside.com 2019 - 2024. All rights reserved.