我有一个测试方法,其中包含以下代码段:
private void buildChainCode(List<TracedPath> lines){
for(TracedPath path : lines){
/.../
}
}
Run Code Online (Sandbox Code Playgroud)
我的单元测试代码如下所示:
public class ChainCodeUnitTest extends TestCase {
private @Mock List<TracedPath> listOfPaths;
private @Mock TracedPath tracedPath;
protected void setUp() throws Exception {
super.setUp();
MockitoAnnotations.initMocks(this);
}
public void testGetCode() {
when(listOfPaths.get(anyInt())).thenReturn(tracedPath);
ChainCode cc = new ChainCode();
cc.getCode(listOfPaths);
/.../
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,在运行测试时,测试代码永远不会进入for循环.什么时候我应该指定条件,以便输入for循环?目前我已指定when(listOfPaths.get(anyInt())).thenReturn(tracedPath)
,但我想它从未使用过.
我有一个测试方法,开始遵循:
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
contextString = adapter.getItem(info.position);
/.../
}
Run Code Online (Sandbox Code Playgroud)
我想用Mockito测试它,但如果我声明这样的menuInfo:
@Mock ContextMenuInfo menuInfo
Run Code Online (Sandbox Code Playgroud)
然后我无法编译以下语句:
Mockito.when(menuInfo.position).thenReturn(1);
Run Code Online (Sandbox Code Playgroud)
因为它对于ContextMenuInfo
对象无效.我不能将我的对象声明为AdapterView.AdapterContextMenuInfo
类,因为那时我在运行时遇到错误.
我知道在Mockito中,mock可能实现多个接口,但同样不适用于类.如何测试上面显示的方法?