没有默认构造函数和私有方法的Abstract类的测试类?

时间:2015-04-19 12:45:45

标签: java junit4 easymock testcase

我的项目遇到了问题,我在一些示例中提出了问题。

package com.sample.code;

public abstract class AbstractClass {

    public String var1;

    //in this class NO default constructor

    public String method1(){
        return "method1 "+privateMethod();
    }

    protected AbstractClass(String var1){
        this.var1=var1;
    }

    private String privateMethod(){
        return "private method";
    }
}

我有一个私有方法,由我的实际方法和受保护的单个论证构造函数使用。

我需要为我的'method1()'编写测试用例 我需要使用junit和EasyMock。

2 个答案:

答案 0 :(得分:-1)

Test类也是一个典型的java类,它可以扩展其他类,甚至测试类,所以你可以这样做:

class AbstractClassTest extends AbstractClass
{
    public AbstractClassTest()
    {
        super("some_string");
    } 
    @Test
    public void testMethod1()
    {
         //....
    }
}

由于测试类正在扩展基类,因此必须在其构造函数中调用基类构造函数。你没有这个私有字段的setter,所以如果你需要测试更多的实例,你可以在测试类中实例化测试类:

AbstractClassTest abc = new AbstractClassTest("other_string");

要做到这一点,你需要第二个ctor用于测试课程:

public AbstractClassTest(String param)
{
    super(param);
}

答案 1 :(得分:-1)

我会使用具体的类实现测试它,如:

 MyConcreteClass clazz = ..;//MyConcreteClass could be local class or actual production class
 Assert.assertEquals("method1 private method",clazz.method1());