gpt4 book ai didi

java - JUnit4 中静态内部测试类的嵌套测试设置

转载 作者:行者123 更新时间:2023-11-30 10:03:51 27 4
gpt4 key购买 nike

我在此处阅读了有关使用 JUnit 创建内部测试类以更好地构建测试的可能性:Test cases in inner classes with JUnit

这一切都很好,但现在我遇到了一个我无法优雅解决的问题:我想在所有测试中有一些通用的测试设置,并为各个内部类设置一些额外的设置。

我的结构看起来像这样:

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;

import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

@RunWith(Enclosed.class)
public class CalculatorTest {
private Calculator calc; // class under test

@Mock
private Object someMockObject;

@Before
public void setUp() {
// common setup
MockitoAnnotations.initMocks(this);
calc = new Calculator();

when(someMockObject.toString()).thenReturn("my happy little mock object");
}

public static class AddTests {
@Before
public void setUp() {
// test setup specifically for this class
when(someMockObject.toString()).thenReturn("does not compile :(");
}

@Test
public void shouldAddTwoIntegers() {
int result = calc.add(2, 5);
assertEquals(7, result);
}
}
}

我的问题是,内部类需要是静态的,但我想引用封闭类的通用设置。这样做(显然)会导致以下错误:

Cannot make a static reference to the non-static field someMockObject

有什么方法可以嵌套设置吗?或者我是否需要依次设置每个类(因此需要重复代码)?

使用的Java版本:Java8
使用的库:JUnit4、Mockito2.12

最佳答案

从嵌套类中移除静态,使用@RunWith(NestedRunner.class)

运行

将 junit-runners 从 com.nitorcreations 添加到 pom.xml。

关于java - JUnit4 中静态内部测试类的嵌套测试设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56181114/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com