Java 在Mockito中模拟深层对象
我希望实现以下目标:Java 在Mockito中模拟深层对象,java,android,unit-testing,mocking,mockito,Java,Android,Unit Testing,Mocking,Mockito,我希望实现以下目标: Class A{ List<Class B> list; } Class B{ } @Mock A a; when(a.list.isEmpty()).then(true); // this throws an error 我必须使用getter: when(a.getList().isEmpty()).then(true); 但是我不想改变我的代码,在任何地方都使用getter 不能模拟对成员变量的直接访问。因此,您有几个选择: 使用吸气剂 将成员变量
Class A{
List<Class B> list;
}
Class B{
}
@Mock
A a;
when(a.list.isEmpty()).then(true); // this throws an error
我必须使用getter:
when(a.getList().isEmpty()).then(true);
但是我不想改变我的代码,在任何地方都使用getter 不能模拟对成员变量的直接访问。因此,您有几个选择:
a.list=mock(…)
或等效项)a.list=new ArrayList()代码>就足够了
不能模拟对成员变量的直接访问。因此,您有几个选择:
a.list=mock(…)
或等效项)a.list=new ArrayList()代码>就足够了
我恐怕你真的没有选择的余地(除非你在某个时候做了类似于
a.list=mock(…);
的事情)。如果为了测试的目的,你希望列表是空的,那么你不能只使用一个空列表,而不模拟任何东西吗?说真的,使用getter。否则,您将遇到比这个问题多得多的问题。我恐怕您真的没有选择的余地(除非您在某个时候执行类似于a.list=mock(…);
的操作)。如果出于测试的目的,您希望列表为空,那么您不能只使用空列表,而不模拟任何内容吗?说真的,使用getter。否则,您将遇到比这一个多得多的问题。
when(a.getList().isEmpty()).then(true);