为了账号安全,请及时绑定邮箱和手机立即绑定

在Junit5中为每个测试设置环境变量

在Junit5中为每个测试设置环境变量

森林海 2021-05-14 15:10:18
我必须将测试从JUnit 4迁移到JUnit 5,我必须使用@Rule来设置EnvironmentVariables变量。在Junit 4中,为每个测试清除了变量,在JUnit 5中,我需要相同的行为,因为现在正在运行的测试是分别传递的,但是当我从类中运行所有测试时,第二个测试将失败,因为仍然具有相同的环境变量。我有:@Rule public final EnvironmentVariables environmentVariables = new EnvironmentVariables();@Testvoid method1(){...}@Testvoid method2(){...}我对Junit 5尚不熟悉,因此在此先感谢您的帮助
查看完整描述

3 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

你有没有@RuleJUnit 4中应做与Extension在JUnit的5提供了一个非常紧密的功能
所以,你可以创建例如分机EnvironmentVariablesExtension所执行你的逻辑@Rule,并通过注释您的测试类使用它在你的单元测试(ES)@ExtendWith(EnvironmentVariablesExtension.class)

请注意,如果@Rule在单个单元测试类中使用单个,则可以将此逻辑移入@BeforeEach每次运行测试之前调用的lifecyle方法。
如果只有几个类setup在单个项目中使用此类,则仍可以引入一个抽象基测试类,该抽象基测试类在@BeforeEach方法中进行此设置,并使单元测试类继承自该基类。
的最大价值之一@Rule是当您要为单元测试定义多个规则时,或者要在其他应用程序/项目中重用规则时。并非如此,不要像Extension在JUnit5中那样引入它们并保持目前的简单性。



查看完整回答
反对 回复 2021-05-19
?
Qyouu

TA贡献1786条经验 获得超11个赞

我认为您的关键字存在问题final。删除它,它应该可以工作,

尝试这样:

@Rule
public EnvironmentVariables environmentVariables = new EnvironmentVariables();

final =定义只能分配一次的实体

所以从我的角度来看,这困扰着您。


查看完整回答
反对 回复 2021-05-19
  • 3 回答
  • 0 关注
  • 814 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信