[英]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.