我在Android应用上实施测试,我想在模型上进行单元测试。问题是我没有设置器,因为模型是使用Realm创建的,或者是通过解析CSV文件(巫婆的univocity csv解析器)。 那么,我怎样才能创建一个具有有效值的模拟对象?我有类似的东西:
public class Content {
private String title;
private String description;
...
}
如何生成带有标题和描述数据的模拟内容对象?
提前致谢
答案 0 :(得分:1)
在测试类中使用以下代码:
Field field = Content.class.getDeclaredField("str");
field.setAccessible(true);
field.set(yourObject, "some value");
yourObject
是您在测试类中使用的Content
的实例。
但是你不应该填充模拟对象 - 你应该只为模拟对象定义方法结果。
答案 1 :(得分:0)
警告:反思有很多缺点;例如,您的字段的简单名称更改将被忽视;并且不会导致编译器错误,但会导致单元测试失败。
我建议使用另一种解决方案 - 提供一个包私有或受保护的构造函数,您可以使用它来初始化字段。然后你做不来使用反射;同时,该类的“公共”界面也不会改变,例如:
public class Content {
// unit testing only
Content(String title, ... ) { ...
但是,当然,你必须做到平衡 - 你要么添加生产所不需要的构造函数;或者你没有那么强大的反射代码!