繁体   English   中英

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

[英]Test class for Abstract class with no default constructor and private method?

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

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。

测试类也是典型的java类,它可以扩展其他类,甚至是测试过的类,因此您可以执行以下操作:

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

由于测试类是扩展基类,因此必须在其构造函数中调用基类构造函数。 您没有此私有字段的设置器,因此,如果您需要测试更多实例,则可以在测试类中实例化测试类:

AbstractClassTest abc = new AbstractClassTest("other_string");

为此,您将需要第二个ctor用于测试类:

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

我将使用如下的具体类实现对其进行测试:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM