testng
将junit
作为传递Maven依赖项进行投影。它不应该是junit
的替代品吗?
来自mvn dependency:tree
:
[INFO] +- org.testng:testng:jar:6.9.6:test
[INFO] | \- junit:junit:jar:4.10:test
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.1:test
说真的,为什么? 这会导致不断的痛苦,因为IDE提供导入@Test注释,它们在使用中几乎相同,导致在项目中同时进行junit和testng测试。
排除junit传递依赖是否安全?可能会破坏什么?
答案 0 :(得分:5)
免责声明:我是TestNG的贡献者。
我们在一些版本之前用Gradle替换了Maven,我们没有找到定义可选依赖项的方法。现在应该修复:https://github.com/cbeust/testng/pull/844
这解释了为什么在某些版本中,您可以将JUnit视为TestNG的直接依赖。 但这不是预期的行为,你可以毫无问题地将它从类路径中排除(如果你不需要它来运行一些JUnit测试)。
答案 1 :(得分:3)
因为testng
提供了JUnit
集成,因此可以在JUnit
框架内运行testng
个测试。基本上它被添加为从" JUnit方式"迁移JUnit
测试的路径。以"测试方式"。您可以阅读更多相关信息here。
我不知道testng
是否会在移除此集成时运行;但是,你总是可以删除传递依赖,然后找出答案。
答案 2 :(得分:3)
http://plnkr.co/edit/LTBWTWf7hxlfc5niXsGN?p=preview回答是正确的,但我想添加一些有关依赖项本身的信息。 JUnit被标记为optional
依赖项(Edwin Buck's):
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<optional>true</optional>
</dependency>
根据see the pom,这意味着如果您不需要该功能,您应该能够排除依赖项:
这个想法是,某些依赖项仅用于项目中的某些功能,如果不使用该功能则不需要。
因此,至少可以排除依赖关系。
为了详细说明TestNG和JUnit如何连接,您可能需要依赖的功能,TestNG支持the Maven documentation。根据文档,这将实现如下:
<test name="Test1" junit="true">
<classes>
<!-- ... -->