模拟类中Autowired类的测试覆盖率

时间:2019-03-01 16:34:51

标签: java unit-testing junit mockito

我具有以下结构,并且遇到一个问题,即我的测试无法从我的DataLoader.getListForName到达Autowired类MyHelperTest.testGetDataAsList。这意味着当我运行测试时,流程甚至都没有转到getListForName方法。我想念的是什么

@Component
public class MyHelper{
@Autowired
private DataLoader dataLoader;

public List<String> getDataAsList(String name, boolean flag)
{
    List<String> dataList = new ArrayList<>();
    dataList.addAll(dataLoader.getListForName(name,flag));
    return dataList;
}
}

=====

@Component
public class DataLoader{
    Map<String,List<String>> myMap = new HashMap<>();
    public List<String> getListForName(String name, boolean flag){
        if(flag) return myMap.get(name); 
    }
}

=====

public class MyHelperTest{
    @InjectMocks
    private MyHelper myHelper;

    @Mock
    private DataLoader dataLoader;

    @Test
    public void testGetDataAsList(){
        List<String> myList = myHelper.getDataAsList("test1",true);
        assertTrue(myList.contains("Age"));

    }
}

1 个答案:

答案 0 :(得分:0)

由于您已嘲笑/archive -/a -file.pl -/b -file.py -file1.html -index.html -some_junk.zip ,因此在定义它之前没有任何有价值的操作。 例如: 如果您想致电VERBOSE: Preparing to compress... VERBOSE: Performing the operation "Compress-Archive" on target " C:\archive\a C:\archive\b". VERBOSE: Adding 'C:\archive\a\file.pl'. VERBOSE: Adding 'C:\archive\b\file.py'. VERBOSE: Adding 'C:\archive\b\file1.html'. VERBOSE: Adding 'C:\archive\index.html'. VERBOSE: Adding 'C:\archive\some_junk.zip'. 您需要设置

dataLoader

在您调用它之前。

请记住,模拟始终会生成没有任何实际属性或方法的模拟对象,而不是已定义了其所有属性或方法的真实对象