簡體   English   中英

私人班級單元測試

[英]Private class unit tests

如何在java中進行單元測試私有(表示包可見性)?

我有一個包,這個包中只有一個類是公共的,其他類是私有的。 如何覆蓋其他單元測試分類? 我想在休息罐中加入單元測試。

在同一個包中創建單元測試類。

例如,如果com.example.MyPrivateClass位於src/main/java/com/example/MyPrivateClass.java

然后測試類將在相同的包com.example.MyPrivateClassTestCase ,並將位於src/test/java/com/example/MyPrivateClassTestCase.java

如@ Kowser的回答所示,測試可以在同一個包中。

在Eclipse中,我假設其他IDE,可以在不同的項目中使用類,但是在同一個包中。 可以聲明項目依賴於另一個項目,使其他項目的類可用。 這允許單獨的單元測試項目依賴於生產項目並遵循其包結構,但具有自己的根目錄。

該結構使測試代碼與生產代碼完全分離。

有兩種方法可以做到這一點。

標准方法是在要測試的類的同一個包中定義測試類。 這應該很容易完成,因為現代IDE在默認情況下測試的類的同一個包中生成測試用例。

非標准但非常有用的方法是使用反射。 這允許您將私有方法定義為真正的“私有”而不是“包私有”。 例如,如果你有課。

class MyClass {
    private Boolean methodToBeTested(String argument) {
        ........
    }
}

您可以使用以下測試方法:

class MyTestClass {

    @Test
    public void testMethod() {
        Method method = MyClass.class.getDeclaredMethod("methodToBeTested", String.class);
        method.setAccessible(true);
        Boolean result = (Boolean)method.invoke(new MyClass(), "test parameter");

        Assert.assertTrue(result);
    }
}

暫無
暫無

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

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