簡體   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