假设我有一个@BeforeEach使用外部方法来获取值并使用该值进行设置的方法:
@BeforeEach
void foo() {
int bar = getBarFromSomething();
setupSomethingWithBar(bar);
}
Run Code Online (Sandbox Code Playgroud)
现在,我希望能够在方法在测试用例之前被调用之后,将值bar(每次getBarFromSomething()调用可能会改变)传递给每个单独foo()的测试用例。我想这样做,以便可以使用在@BeforeEach foo()方法调用中设置的参数来测试某些内容:
@Test
void test_baz(int bar) {
assertEquals(bar, 5);
}
Run Code Online (Sandbox Code Playgroud)
我应该如何将参数从@BeforeEach foo()调用传递给每个@Test个案?我不认为参数化测试会起作用,因为生成的方法bar可能会输出不同的结果,因此每次每次运行都只需要调用一次,@BeforeEach并且@Test需要在foo()调用中使用它进行设置。
只需将方法变量移动到成员变量即可,如下所示:
int bar = getBarFromSomething();
@BeforeEach
void foo() {
setupSomethingWithBar(bar);
}
Run Code Online (Sandbox Code Playgroud)
然后
@Test
void test_baz() {
assertEquals(bar, 5);
}
Run Code Online (Sandbox Code Playgroud)
应该管用
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |