吸气剂的junit试验方法&制定者

时间:2010-02-07 20:20:05

标签: java unit-testing junit getter-setter

我的项目中有很多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来执行此操作?

4 个答案:

答案 0 :(得分:24)

测试驱动开发的理念是“测试可能会破坏的一切”。也就是说,将精力集中在有用的测试上,而不仅仅是为了编写测试。

Getters和setter几乎总是琐碎的代码,不值得自己测试。

我知道这不是你的请求的直接答案,但我认为它可能仍然有助于指出这一点;-)那么为什么你真的需要首先为所有那些吸气剂和制定者编写测试?< / p>

答案 1 :(得分:11)

如果一个类中有100个字段(带有相应的setter / getters),我怀疑你的对象模型没有正确分解。 100多个字段听起来像一个对象的非常多的字段,我猜它有几个职责可以分成许多更专业的对象。

答案 2 :(得分:5)

您也许可以使用Apache Commons的“beanutils”来帮助自动执行此操作:

http://commons.apache.org/beanutils/apidocs/org/apache/commons/beanutils/PropertyUtils.html#getSimpleProperty%28java.lang.Object,java.lang.String%29

例如,有一个方法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对象。