是否可以初始化对象以测试不在声明但在每个测试用例中?我无法在声明中初始化对象,因为传递给构造函数的参数是测试用例的一部分。我需要一些东西:
@TestSubject
private ClassUnderTest classUnderTest;
@Mock
private Collaborator mock;
@Test
public void test12() {
classUnderTest = new ClassUnderTest(1, 2);
replay(mock);
Integer result = classUnderTest.work(3, 4);
// Assertions
}
但如果我这样做,Easymock会抱怨:
java.lang.NullPointerException: Have you forgotten to instantiate classUnderTest?
我已经看了MockBuilder,但在这种情况下,我不知道它可以提供什么帮助。
答案 0 :(得分:0)
EasyMock不支持您要求的内容。但是,其他测试库可以/可能支持它。例如,使用JMockit:
@Test
public void test12(
@Injectable("1") int a, @Injectable("2") int b, @Tested ClassUnderTest cut
) {
Integer result = cut.work(3, 4);
// Assertions
}
答案 1 :(得分:0)
当然可以!有两种方式。
在之前:
load
或旧的方式:
private ClassUnderTest classUnderTest;
private Collaborator mock;
@Before
public void before() {
classUnderTest = new ClassUnderTest(1, 2);
EasyMockSupport.injectMocks(this);
}
@Test
public void test12() {
classUnderTest = new ClassUnderTest(1, 2);
replay(mock);
Integer result = classUnderTest.work(3, 4);
// Assertions
}