首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在独立的进程中运行JUnit测试?

如何在独立的进程中运行JUnit测试?
EN

Stack Overflow用户
提问于 2012-09-03 18:11:27
回答 5查看 4.5K关注 0票数 4

我有两个用JUnit实现的集成测试。这两个测试都执行对远程服务器的调用,并且服务器目标由环境变量配置:

代码语言:javascript
复制
System.setProperty("property", "value1");

棘手的是,对于两个测试,这些属性必须是不同的。如果我为每个单元测试设置环境变量,它将不起作用,因为我们正在使用的中间件在第一次调用时缓存属性值,并且不再计算它(对于第二次测试)。

我认为解决方案可能是在单独的进程中运行这些单元测试。我看到过类似的讨论here,但也许有更优雅的方式来用JUnit4做到这一点呢?这个问题看起来很常见。或者,也许还有其他方法可以用不同的配置运行单元测试?

提前感谢您的建议。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-09-03 18:14:26

在测试之间不能重置状态被认为是不好的做法。虽然不容易测试的代码很常见,但解决方案并不简单。

我会考虑重置缓存值,即使你使用反射来做。需要重置的确切内容取决于库的内部表示。

票数 2
EN

Stack Overflow用户

发布于 2012-09-03 18:20:17

这取决于你是如何运行JUnit的。

如果您希望能够在集成开发环境或构建环境中运行它,请实现您的自定义Runner,并使用注释RunWith(MyRunner.class)标记测试用例。

如果您正在使用maven,并且能够从那里运行测试就足够了,那么可以在maven-surefire-plugin定义中使用<forkMode>always</forkMode>

代码语言:javascript
复制
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.11</version>
            <configuration>
                <systemProperties>
                    <systemProperty>
                        <name>panpwr.conf.dir</name>
                        <value>${basedir}/conf-test</value>
                    </systemProperty>
                </systemProperties>
                <forkMode>always</forkMode>
票数 3
EN

Stack Overflow用户

发布于 2015-05-18 00:24:50

我需要在使用一些遗留代码时隔离junit测试,所以我开发了小的maven插件Jute,它允许在独立的外部进程、I have published it in GitHubmaven central中启动每个Junit测试方法,该插件可能是您问题的合适解决方案,而且该插件还允许使用不同的JVM启动此类测试

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12245806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档