2015-11-03 64 views
11

我想单元测试一个UtilsClass类型的静态方法,它返回一个。在这个方法里面,我在它的构造函数中注入了一对String [],例如。 final Pair<String[], String[]> pair = new Pair<>(new String[] {"Hello", "World"}, new String[] {"£33", "£44"});并期望返回此对象。android.util.Pair在androidTest中保存String []作为参数,但在(单元)中为null测试

当我单元测试此方法时,我得到一个非空Pair对象,但其字段first = nullsecond = null。当我在Instrumentation-type测试中运行相同的测试代码时,这些字段正确填充。我可以看到,在后一种情况下,输入调试点的构造函数public Pair(F first, S second) {被输入并且字段已设置,但未在单元测试中。

我在寻找解释为什么会出现这种情况,如果我应该避免在代码中首先将String[]作为构造函数参数传递。

+2

单元测试可以使用基本上没有操作的模拟对象。在调试时,您可以进入构造函数并查看实际发生的情况。有可能这里使用的类的构造函数实际上是空的 – njzk2

+2

这似乎是这种情况!当我使用便捷方法'公共静态创建(A a,B b){'而不是我得到了“”方法...没有嘲笑。“”错误。在测试中转换实际值会消除错误,但两种创建方法中的值仍然为空。 android.support.v4.util.Pair完全不受此影响。 – TomaszRykala

+1

是的,因为支持图书馆,它是与你的apk捆绑在一起(所以它不能被单元测试嘲笑) – njzk2

回答

16

由于njk2和TomaszRykala发现,使用android.support.v4.util.Pair而不是android.util.Pair修复了这个问题。

相关问题