我想通過jdepend來測試我的軟件包tree
是否爲封裝週期(即具有直接循環依賴性)。目前,它不是(見下面的輸出,並且jdepend的Eclipse插件沒有找到tree
的週期)。但斷言下方,建議在jdepend手冊,失敗:如何在junit中使用jdepend的JavaPackage.containsCycle()來檢測我的軟件包是否在軟件包週期中?
// setup....
JavaPackage p = jdepend.getPackage("tree");
System.out.println(p.getName() + "'s efferent packages: ");
for (Object jp : p.getEfferents()) {
System.out.println(((JavaPackage) jp).getName());
}
assertThat(p.containsCycle(), is(false));
輸出是:
tree's efferent packages:
java.util
java.lang
java.lang.reflect
java.util.logging
java.io
org.hamcrest
的斷言失敗是遞歸調用getEfferents()的原因,把所得封裝中一個列表並返回true
如果某個軟件包已經在其中。因此,檢查是否存在可用的包週期(即,樹是否具有間接循環依賴性)。
但我怎麼能只測試直接循環依賴,即樹是否是上包週期(而不是,這導致了一些其他的包週期,例如在org.hamcrest)?