【问题标题】:Testing model classes in Android在 Android 中测试模型类
【发布时间】:2013-04-08 22:36:54
【问题描述】:

我需要测试我项目的所有模型类。这是其中的一类

public class TMyData{
    private mVar1;
    private mVar2;
    ...

    private TMyData(){
    }

    public static TMyData fromString(String str){
        ...
    }


    public String toString(){
        ...
    }


}

简单来说,测试应该是:

1) 创建一个随机的 TMyData

2) 调用 toString

3) 从字符串调用

4) 检查它们是否相同

问题是创建随机的 TMyData。由于测试类是一个单独的类(TMyDataTest),我无法执行以下操作:

TMyData p = new TMyData();  //I can't, because its private
p.mVar1 = ...; // I can't because is also private

我不想仅仅因为测试而改变我所有的变量/方法的可见性......而且我也不希望用户访问私有变量(没有 getter 或 setter)

很多人一定遇到过类似的问题,因为所有项目都有自己的模型。哪种方法是正确的测试方法?

【问题讨论】:

  • 以及 mVars 是从哪里来的?
  • 它们来自另一个解析另一个对象的构造函数。这个其他对象来自外部库,我无法创建它。

标签: java android unit-testing


【解决方案1】:

我只能通过反射来找到解决方案。

Field f = tmydata.getClass().getDeclaredField("mVar1"); //NoSuchFieldException
f.setAccessible(true);
f.set(tmydata,dataToSet);

【讨论】:

  • 在尝试了许多不同的事情之后,这是最好的解决方案。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
  • 2022-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多