我正在尝试测试在Android上的UnitTest中找不到类。
发生了什么:
1.我正在编写一个具有transitive
依赖关系的android库,这些依赖关系在宿主应用程序中得到了解决
。2.开发人员可能会删除一些依赖关系,例如删除所有依赖关系com.example.package
。3.我有一个Factory会尝试实例化(使用反射)反对并抓住ClassNotFoundException
。如果开发人员删除了依赖项,则应引发异常。
4.我想测试这种情况,但是我发现的只是依赖关系问题,而不是如何进行测试。
我要测试的示例代码
try {
sNetworkResponseBuilderClass = OkHttpNetworkResponse.Builder.class;
} catch (Exception e){
// <<<< I want to test this case
new ClassNotFoundException("Unable to find OkHttpNetworkResponse.Builder.class").printStackTrace();
return null;
}
使用的库: hamcrast,mockito,JUnit 4。
你知道怎么做吗?
因此,对我来说,您需要做的第一件事是提取代码中可以抛出a的部分ClassNotFoundException
,以便能够轻松对其进行模拟,例如:
public Class<? extends NetworkResponseBuilder> getNetworkResponseBuilderClass()
throws ClassNotFoundException {
// Your logic here
}
然后,您可以使用测试真实的工厂实例Mockito.spy
,以重新定义方法的行为,getNetworkResponseBuilderClass()
如下所示:
public void testFactoryIfNetworkResponseBuilderNotFound() {
Factory factory = spy(new Factory());
when(factory.getNetworkResponseBuilderClass()).thenThrow(
new ClassNotFoundException()
);
// The rest of your test here
}
public void testFactoryIfNetworkResponseBuilderFound() {
Factory factory = spy(new Factory());
when(factory.getNetworkResponseBuilderClass()).thenReturn(
OkHttpNetworkResponse.Builder.class
);
// The rest of your test here
}
有关Mockito.spy的更多详细信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句