【发布时间】:2020-04-01 23:25:41
【问题描述】:
我是 java 测试的新手,现在一直在摆弄这个,没有运气,我有以下课程:
public class Bar {
public Object doSomething(int a, String b){
return "something";
}
public Object doSomethingElse(int a, int b, String c){
return "something else";
}
}
public class Foo {
private static Bar bar = new Bar();
public static void start(int a, int b, String c){
if(a == 1) { // some calculated condition
bar.doSomething(a, c);
} else {
bar.doSomethingElse(a, b, c);
}
}
}
@RunWith(PowerMockRunner.class)
@PrepareForTest(Foo.class)
public class FooTest {
@Test
public void somethingTest() throws Exception {
Bar barMock = createMock(Bar.class);
expectNew(Bar.class).andReturn(barMock);
expect(barMock.doSomething(1, "xxx")).andReturn("ABC");
replay(barMock, Bar.class);
Foo.start(1, 2, "xxx");
verify(barMock, Bar.class);
}
@Test
public void somethingElseTest() throws Exception {
Bar barMock = createMock(Bar.class);
expectNew(Bar.class).andReturn(barMock);
expect(barMock.doSomethingElse(0, 2,"xxx")).andReturn("ABC");
replay(barMock, Bar.class);
Foo.start(0, 2, "xxx");
verify(barMock, Bar.class);
}
}
单独运行测试,但不是整个班级,我认为这与:
private static Bar bar = new Bar();
但我不能 100% 确定。无论哪种方式,假设我无法更改 foo / bar 类,我该如何解决这个问题?
【问题讨论】:
-
私有静态构造函数?
-
我意识到这不是很好,我只是想弄清楚如何测试这样的东西。
标签: java junit mockito powermockito easymock