我的项目中有很多java bean。我需要为它们生成一个JUnit Test类。使用Eclipse 3.2& S生成的测试方法。 junit 4.4如下所示:
public void testGetName() {
// fail("Not yet implemented");
}
@Test
public void testSetName() {
// fail("Not yet implemented");
}
@Test
public void testGetEmployeeid() {
// fail("Not yet implemented");
}
@Test
public void testSetEmployeeid() {
// fail("Not yet implemented");
}
我的一些豆子有超过100个......
我是否有办法为吸气剂和放大器提供单一的测试方法?像testEmployeeid()
,testName()
这样的设置者,所以在这些方法中,我可以测试我的二传手和吸气剂而不是使用2差异。测试方法......
我应该如何配置eclipse来执行此操作?
答案 0 :(得分:24)
测试驱动开发的理念是“测试可能会破坏的一切”。也就是说,将精力集中在有用的测试上,而不仅仅是为了编写测试。
Getters和setter几乎总是琐碎的代码,不值得自己测试。
我知道这不是你的请求的直接答案,但我认为它可能仍然有助于指出这一点;-)那么为什么你真的需要首先为所有那些吸气剂和制定者编写测试?< / p>
答案 1 :(得分:11)
如果一个类中有100个字段(带有相应的setter / getters),我怀疑你的对象模型没有正确分解。 100多个字段听起来像一个对象的非常多的字段,我猜它有几个职责可以分成许多更专业的对象。
答案 2 :(得分:5)
您也许可以使用Apache Commons的“beanutils”来帮助自动执行此操作:
例如,有一个方法describe(Object bean)
将返回所有可读属性(即getter)的映射。
然后迭代该地图并致电:
setSimpleProperty(Object bean, String name, Object value)
和
public static Object getSimpleProperty(Object bean, String name)
虽然我同意其他海报而不是吸气剂/制定者是非常微不足道的 - 我认为它仍然值得测试 - 消除错别字,测试属性变化听众等。
例如,这将动态提取bean的getter:
import java.io.Serializable;
import java.util.Set;
import org.apache.commons.beanutils.PropertyUtils;
public class MyTestBean implements Serializable {
private int a;
private int b;
private int c;
private String x;
private String y;
private String z;
public static void main(String[] args) throws Exception {
MyTestBean bean=new MyTestBean();
Set prop=PropertyUtils.describe(bean).keySet();
for (Object o : prop) {
System.out.println((String)o);
}
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
public int getC() {
return c;
}
public void setC(int c) {
this.c = c;
}
public String getX() {
return x;
}
public void setX(String x) {
this.x = x;
}
public String getY() {
return y;
}
public void setY(String y) {
this.y = y;
}
public String getZ() {
return z;
}
public void setZ(String z) {
this.z = z;
}}
您需要将BeanUtils和CommonsLogging以及两个库的JAR下载到您的项目中以运行此代码。
答案 3 :(得分:3)
我想这个图书馆是您问题的答案:http://outsidemybox.github.com/testUtils/
它测试所有bean的初始值,setter,getters,hashCode(),equals()和toString()。您所要做的就是定义默认和非默认属性/值的地图。
它还可以测试具有其他非默认构造函数的bean对象。