我正在尝试使用junit和mockito(非常新)为Sping Boot 应用程序编写单元测试。基本上,在我的代码中,我已经为清单中的特定URL指定了一个环境变量。yml文件(用于部署),我可以在代码中通过String URL = System.getenv("VARIABLE")
访问它。然而,我在单元测试中遇到了很多麻烦,因为URL
变量显然没有定义。我尝试了解决方案here,但意识到这只是为了模拟环境变量,如果你从实际的测试本身调用它,而不是如果你依赖于环境变量可以从代码访问。
有没有什么方法可以设置它,这样当测试运行时,我就可以设置可以在代码中访问的环境变量?
2条答案
按热度按时间2cmtqfgy1#
可以使用
PowerMockito
来模拟静态方法。这段代码演示了模拟System
类和存根getenv()
我相信这说明了你正在努力实现的目标。也许有一种更优雅的方法可以使用PowerMockito来做到这一点。spy(),我就是记不起来了。
您需要为System中的所有其他方法执行
thenCallRealMethod()
。直接或间接被你的代码调用的类。f4t66c6m2#
这可以通过https://github.com/webcompere/system-stubs实现
你有几个选择:
或者可以使用JUnit4或5插件完成: