返回信息流最近写单元测试,遇到很多问题,发上来请教下大家~ 求大神!
public class DataBrokerAdapter {
private static final Logger log = LoggerFactory.getLogger(DataBrokerAdapter.class);
final private DataBroker dataBroker;
private static final String DEFAULT_TOPOLOGY_ID = "flow:1";
public DataBrokerAdapter(DataBrokerdataBroker) {
this.dataBroker = dataBroker;
}
..........
}
这是一个被测试类,其中DataBroker类是在maven下载的依赖中,编译器是感知不到的.
由于里面有很多protected和private方法,楼主准备写个测试类DataBrokerAdapterTest来继承DataBrokerAdapter.
问题出在子类的构造函数的写法中:
第一种:
public class DataBrokerAdapterTest extends DataBrokerAdapter {
private DataBroker dataBroker;
public DataBrokerAdapterTest(DataBroker dataBroker){
super(dataBroker);
this.dataBroker = dataBroker;
}
...
}
这样写控制台报错:测试类必须有一个0参构造函数
第二种:
我只写一个无参构造函数,结果控制台报错父类没有默认的无参构造函数
第三种:
无参和有参构造函数都写一个,控制台报错测试类只能有一个构造函数.........
这问题是什么意思啊? 求大神帮忙解决下~
这是一条镜像帖。来源:北邮人论坛 / java / #45931同步于 2015/11/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
java单元测试= =
menmencqupt
2015/11/30镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
额 暖神能说清楚点么? 我是用的junit4测试,不过这个类得去测试protected和private方法,我不知道怎么弄就让他去继承被测类了.
【 在 nuanyangyang 的大作中提到: 】
: 请用JUnit4。Maven对JUnit的支持很好的。
【 在 menmencqupt 的大作中提到: 】
: 额 暖神能说清楚点么? 我是用的junit4测试,不过这个类得去测试protected和private方法,我不知道怎么弄就让他去继承被测类了.
放google搜了一下“junit private”,找到了这个:
http://stackoverflow.com/questions/34571/how-to-test-a-class-that-has-private-methods-fields-or-inner-classes
按这里的说法,可以用反射。
所以:
1. 不要继承被测类
2. 用@Before标注的方法来初始化
3. 用反射吧。
嗯 目前是在用反射,但是遇到了一点点问题. 暖神你看看我另一个帖子,就是问的反射的问题,主要是调用私有method传实参进去的时候,如果传入那种不是现有的类的对象(比如yang文件编译生成或者maven中依赖下载下来的包中的类)会报错.... 说是不是object的类型的实例.
【 在 nuanyangyang 的大作中提到: 】
:
: 放google搜了一下“junit private”,找到了这个:
: http://stackoverflow.com/questions/34571/how-to-test-a-class-that-has-private-methods-fields-or-inner-classes
: ...................