簡體   English   中英

在抽象類中使用靜態變量

[英]Using static variable in abstract class

我在基本抽象類中使用了靜態成員變量,並為其使用了靜態獲取器/設置器。 這是我的課程結構:

public abstract class Parent{
     private static XmlService xmlService;
     //getters and setters for xmlService     
}

此xmlService用於子類中以進行xml轉換等。但是,子類的實例是在運行時基於數據使用另一個服務創建的。 現在,我想用junit進行測試,並需要模擬xmlService。 如果不將其設置為靜態,則看不到使用模擬初始化xmlService的任何方法。

因此,我的問題是這種方法(靜態+抽象)是否可行,或者是否破壞了任何OOP概念等。盡管如此,我看不到任何問題,只是想發表意見。

謝謝

編輯:我認為根據評論,我將審查我的設計,並且很可能會采用構造函數注入方法

您有XML服務的設置器-只需在@Before方法中設置一個模擬對象@Before

public class ParentTest {
    private Parent parent;
    private XmlService origService;

    @Before
    public void setUp() {
       parent = new Parent() { /* anonymously implement the abstract methods */ };
       origService = parent.getXmlService();
       XmlService moxkService = Mockito.mock(XmlService.class);
       // record some behavior...

       parent.setXmlService(mockService);
    }

    @After
    public void tearDown() {
        // Restore the original service
        parent.setXmlService(origService);
    }

    // unit tests...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM