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

nog*_*ard 5 java junit

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

System.setProperty("property", "value1");
Run Code Online (Sandbox Code Playgroud)

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

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

预先感谢您的任何建议。

Pet*_*rey 3

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

即使您使用反射来执行此操作,我也会考虑重置缓存值。究竟需要重置什么取决于库的内部表示。