小编Jon*_*sso的帖子

如何:针对测试环境(数据库)运行maven集成测试

我正在使用maven和maven-failsafe-plugin在集成测试生命周期阶段启动jetty.然后,我对运行的webapp执行了许多(*IT.java)junit测试.这是按预期工作的.

但是,我想连接到测试数据库进行集成测试.我正在存储它的URL

${basedir}/src/test/resources/jdbc.properties  
Run Code Online (Sandbox Code Playgroud)

当jetty插件运行(jetty:run)时,它会使用

${basedir}/src/main/resources/jdbc.propertes 
Run Code Online (Sandbox Code Playgroud)

代替.我尝试通过classesDirectory属性重新配置jetty插件来使用

${project.build.testOutputDirectory}
Run Code Online (Sandbox Code Playgroud)

但是test-classes目录缺少我实际编译的项目类,以及存储的资源

${basedir}/src/main/resources 
Run Code Online (Sandbox Code Playgroud)

注意:surefire将测试资源添加到类路径中,然后是主资源,这样两者中的任何内容都将使用测试版本,因为它首先在类路径中找到.

有关如何正确设置此设置的任何想法?

谢谢!

编辑:

好吧,似乎jetty-plugin上有配置属性来处理这个问题:

  • testClassesDirectory:包含生成的测试类的目录.
  • useTestClasspath:如果为true,则test的依赖项将首先放在运行时类路径中.

不幸的是,它们不起作用.

这是我的pom.xml的相关部分:

  <testResources>
        <testResource>
            <filtering>true</filtering>
            <directory>src/test/resources</directory>
        </testResource>
    </testResources>
    <plugins>
        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1.26</version>
            <configuration>
                <contextPath>/</contextPath>
                <stopPort>8005</stopPort>
                <stopKey>STOP</stopKey>
            </configuration>
            <executions>
                <execution>
                    <id>start-jetty</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <daemon>true</daemon>
                        <useTestClasspath>true</useTestClasspath>
                        <testClassesDirectory>${project.build.testOutputDirectory}</testClassesDirectory>
                    </configuration>
                </execution>
                <execution>
                    <id>stop-jetty</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>stop</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <useFile>false</useFile>
            </configuration>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

java integration-testing surefire maven maven-jetty-plugin

13
推荐指数
1
解决办法
8881
查看次数

XCode 4挂起"正在加载项目"

我没有太多事情要继续...... XCode 4在启动时挂着"正在加载项目".我的构建失败但我无法访问错误.这是在一个以前版本的XCode中工作的项目中发生的.它也适用于新项目.

xcode4

6
推荐指数
1
解决办法
4701
查看次数

DOUBLE(n, 0) 和 BIGINT(n) MySQL 数据类型之间有什么区别吗?

有什么理由在 MySQL 中使用 DOUBLE(n, 0) 而不是 BIGINT(n) 吗?如果数据永远不会有小数部分,是否有任何理由存储为 DOUBLE?

mysql

2
推荐指数
1
解决办法
4168
查看次数