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

我必须将测试从JUnit 4迁移到JUnit 5,我必须使用@Rule来设置EnvironmentVariables变量。在Junit 4中,为每个测试清除了变量,在JUnit 5中,我需要相同的行为,因为现在正在运行的测试是分别传递的,但是当我从类中运行所有测试时,第二个测试将失败,因为仍然具有相同的环境变量。


我有:


@Rule

 public final EnvironmentVariables environmentVariables = new EnvironmentVariables();


@Test

void method1(){...}



@Test

void method2(){...}

我对Junit 5尚不熟悉,因此在此先感谢您的帮助


森林海
浏览 815回答 3
3回答

富国沪深

你有没有@RuleJUnit 4中应做与Extension在JUnit的5提供了一个非常紧密的功能所以,你可以创建例如分机EnvironmentVariablesExtension所执行你的逻辑@Rule,并通过注释您的测试类使用它在你的单元测试(ES)@ExtendWith(EnvironmentVariablesExtension.class)。请注意,如果@Rule在单个单元测试类中使用单个,则可以将此逻辑移入@BeforeEach每次运行测试之前调用的lifecyle方法。如果只有几个类setup在单个项目中使用此类,则仍可以引入一个抽象基测试类,该抽象基测试类在@BeforeEach方法中进行此设置,并使单元测试类继承自该基类。的最大价值之一@Rule是当您要为单元测试定义多个规则时,或者要在其他应用程序/项目中重用规则时。并非如此,不要像Extension在JUnit5中那样引入它们并保持目前的简单性。

Qyouu

我认为您的关键字存在问题final。删除它,它应该可以工作,尝试这样:@Rule public EnvironmentVariables environmentVariables = new EnvironmentVariables();final =定义只能分配一次的实体所以从我的角度来看,这困扰着您。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java