簡體   English   中英

如何要求JUnit測試實現@ BeforeClass / @ AfterClass“抽象方法”?

[英]How to require that JUnit tests implement a @BeforeClass/@AfterClass “abstract method”?

作為一個沉重的TestNG用戶,這不是問題,因為@{Before,After}Class方法不是static ......

但是在JUnit中,他們是。

對於我目前正在做的事情,這是一個很大的問題。

我正在為assertj編寫java.nio.file.Path的斷言 ,它使用JUnit 4.x進行測試。 有些斷言要求我初始化FileSystem (精確的memoryfs )來測試它們; 理想情況下,這樣的文件系統應該在測試類級別初始化,而不是每次測試。 根據測試類,我需要以不同方式初始化該文件系統的內容。

但是現在我使用@Before / @After因為我不知道更好......

再次,使用TestNG,不是問題,因為@{Before,After}Class不是靜態的。 那么,你如何使用JUnit做到這一點?

您可以為初始化創建規則類:

public class Resource extends ExternalResource {
    protected void before() {
        // ...
    }

    protected void after() {
        // ...
    }
}

然后在每個測試中引用它:

@ClassRule public static Resource resource = new Resource();

任何按測試定制都可以通過使資源成為匿名內部類並重寫方法或將參數傳遞給其構造函數來完成。

如果您有一個公共基類,可以將resource放在那里,然后只在需要自定義它的子類中聲明它。 在junit中,子類中的類規則將覆蓋具有相同名稱的父類中的類規則。

暫無
暫無

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

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