【发布时间】:2019-05-17 06:55:47
【问题描述】:
我在这里了解到使用 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);
}
}
}
我的问题是,内部类需要是静态的,但我想从封闭类中引用通用设置。这样做会(显然)导致以下错误:
无法对非静态字段 someMockObject 进行静态引用
有没有办法嵌套设置?还是我需要依次设置每个类(因此重复代码)?
使用的Java版本:Java8
使用的库:JUnit4、Mockito2.12
【问题讨论】:
标签: java unit-testing junit mockito