我为java + spring 3.0.1应用程序编写了一些单元testng测试。测试类扩展了AbstractTestNGSpringContextTests类。
使用STS 2.8.1(右键单击>运行为...-> test ng),在日食中运行良好。但是从命令行失败了,我正在使用maven 2.2.1。我没有在pom.xml文件中定义任何特定的测试插件,因此我假设我使用的是默认版本。
我的信念是命令行测试方法在测试更改对象状态下同时运行并且它们彼此冲突。
但是我看不到任何顺序运行maven测试的选项。
我说我没有指定测试插件,但我确实指定了testng依赖...
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.1.1</version>
<scope>test</scope>
</dependency>
更新 - 我解决了这个问题。 该项目依赖于我在eclipse中导入和更改的另一个项目,但我没有安装在.m2仓库中。 这意味着当我在eclipse中运行测试时,最新的更改是从eclipse工作区中的项目中选取的。但是当我从命令行运行它时,项目的旧版本从.m2 repo中获取。
答案 0 :(得分:1)
单个测试不应该包含它需要运行的所有代码,并且本质上是完全封装的吗?在工作中,我的老板告诉我,一个测试不应该依赖另一个测试。
答案 1 :(得分:0)
默认情况下,在maven的测试阶段使用surefire插件。并行配置的默认值为false。您可以尝试打印threadid以确定它们是在同一个线程中运行还是在不同的线程中运行。否则,您可以明确尝试将surefire插件添加到您的pom并将parallel指定为false。 此外,测试的顺序可能不同,是否会给出意想不到的输出?