我正在尝试(仍然)学习JMockit的细节。这是另一个JMockit奇怪的例子,我就是搞不懂。使用NonStrictExpectations运行测试效果很好。但是,使用MockUp运行则不会。我不知道为什么。有什么想法吗?我运行的是JMockit 1.5。
测试方法:
private List<Foo> getFooList(List<FooStatement> fooStatements){
List<Foo> FooList = new ArrayList<Foo>();
for(FooStatement at: fooStatements){
List<Foo> aList = at.getFoos();
FooList.addAll(aList);
}
return FooList;
}成功的期望测试
@Test
public void getFooListWithExpectationsTest(
@Mocked final FooStatement mockFooStatement,
@Mocked final Foo mockFoo
){
List<FooStatement> fooStatementList = new ArrayList<>(Arrays.asList(
mockFooStatement,
mockFooStatement
));
new NonStrictExpectations(){{
mockFooStatement.getFoos();
result = new ArrayList<Foo>(Arrays.asList(mockFoo));
}};
List<Foo> fooList = Deencapsulation.invoke(handler, "getFooList", fooStatementList);
Assert.assertTrue(fooList.size() == 2);
}MockUp的断言错误(0 != 2)
@Test
public void getFooListWithMockUpTest(
@Mocked final FooStatement mockFooStatement,
@Mocked final Foo mockFoo
){
new MockUp<FooStatement>(){
@Mock
public List<Foo> getFoos(){
return new ArrayList<Foo>(Arrays.asList(mockFoo));
}
};
List<FooStatement> fooStatementList = new ArrayList<>(Arrays.asList(
mockFooStatement,
mockFooStatement
));
List<Foo> fooList = Deencapsulation.invoke(handler, "getFooList", fooStatementList);
Assert.assertTrue(fooList.size() == 2);
}发布于 2015-02-25 01:38:11
您错误地使用了MockUp<?>。MockUp<T?将告诉JMockit重新定义加载到JVM中的类,以便用MockUp<FooStatement中定义的类替换它们,而不是FooStatement的实际类初始化。
基本上,MockUp<FooStatement> new FooStatement()**.**的调用会自动替换MockUp<FooStatement>的调用
尝试如下所示:
@Test
public void getFooListWithMockUpTest(@Mocked final Foo mockFoo){
new MockUp<FooStatement>(){
@Mock
public List<Foo> getFoos(){
return new ArrayList<Foo>(Arrays.asList(mockFoo));
}
};
List<FooStatement> fooStatementList = new ArrayList<>(Arrays.asList(
new FooStatement(),
new FooStatement()
));
List<Foo> fooList = Deencapsulation.invoke(handler, "getFooList", fooStatementList);
Assert.assertTrue(fooList.size() == 2);
}发布于 2019-04-24 13:21:16
MockUp已弃用,请使用Expectations
https://stackoverflow.com/questions/28702346
复制相似问题