除非我 运行 mvn update,否则为什么 Maven 测试在 mvn clean 之后不起作用?
Why does Maven test not work after mvn clean unless I run mvn update?
我正在 运行使用 restassured 和 cucumber 进行一些服务测试,它们仅使用 Maven 测试就可以在本地正常工作。
问题是,如果我 运行 Maven 干净了,那么我必须 运行 Maven 更新,否则它将无法工作(说它找不到我的 Cucumber 功能文件)。作为参考,它说:
No features found at [classpath:classpath/classpath]
这不会是一个大问题,除非我需要通过 Bamboo 进行此 运行ning,而我无法调用 Maven 更新。
所以我要么需要弄清楚我的 POM 有什么问题开始导致这个问题,要么我如何 运行 Maven 通过 goals/environment 变量更新。
POM 相当简单,只有需要的 dependencies/reporting 东西。
POM的构建部分如下:
<build>
<finalName>Test</finalName>
<directory>target</directory>
<outputDirectory>target/classes</outputDirectory>
<testOutputDirectory>target/test-classes</testOutputDirectory>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>src/test/resources</directory>
</resource>
</resources>
</build>
这一切都在 Java 8 中,使用 Eclipse 作为 IDE。
看起来在黄瓜选项中定义 features/glue 解决了这个问题。
不过我相信还有更好的选择。
我添加了以下黄瓜选项:
features ="src/test/java",
glue = "packagename",
我会避免在 pom 的构建部分指定任何内容,而是使用默认值。
也就是说,我会将我的功能文件保存在与 运行ner 或子包相同的包中。
运行 人可以住在包里 se/thinkcode/tage
如在目录中:
./test/java/se/thinkcode/tage
这意味着功能文件应位于目录中:
./test/resources/se/thinkcode/tage
这将允许我最小化 运行ner 中的配置。我通常使用如下所示的 运行ners:
package se.thinkcode.tage;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
public class RunCukesTest {
}
如果您想 运行 使用来自 Maven 的 JUnit 的 Cucumber,这是可能的最小配置。
Cucumber 团队提供的示例更小:https://github.com/cucumber/cucumber-java-skeleton
我正在 运行使用 restassured 和 cucumber 进行一些服务测试,它们仅使用 Maven 测试就可以在本地正常工作。
问题是,如果我 运行 Maven 干净了,那么我必须 运行 Maven 更新,否则它将无法工作(说它找不到我的 Cucumber 功能文件)。作为参考,它说:
No features found at [classpath:classpath/classpath]
这不会是一个大问题,除非我需要通过 Bamboo 进行此 运行ning,而我无法调用 Maven 更新。
所以我要么需要弄清楚我的 POM 有什么问题开始导致这个问题,要么我如何 运行 Maven 通过 goals/environment 变量更新。
POM 相当简单,只有需要的 dependencies/reporting 东西。 POM的构建部分如下:
<build>
<finalName>Test</finalName>
<directory>target</directory>
<outputDirectory>target/classes</outputDirectory>
<testOutputDirectory>target/test-classes</testOutputDirectory>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>src/test/resources</directory>
</resource>
</resources>
</build>
这一切都在 Java 8 中,使用 Eclipse 作为 IDE。
看起来在黄瓜选项中定义 features/glue 解决了这个问题。 不过我相信还有更好的选择。
我添加了以下黄瓜选项:
features ="src/test/java",
glue = "packagename",
我会避免在 pom 的构建部分指定任何内容,而是使用默认值。
也就是说,我会将我的功能文件保存在与 运行ner 或子包相同的包中。
运行 人可以住在包里 se/thinkcode/tage
如在目录中:
./test/java/se/thinkcode/tage
这意味着功能文件应位于目录中:
./test/resources/se/thinkcode/tage
这将允许我最小化 运行ner 中的配置。我通常使用如下所示的 运行ners:
package se.thinkcode.tage;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
public class RunCukesTest {
}
如果您想 运行 使用来自 Maven 的 JUnit 的 Cucumber,这是可能的最小配置。
Cucumber 团队提供的示例更小:https://github.com/cucumber/cucumber-java-skeleton