我的目標是列出項目的公共API類的所有傳遞依賴項,並使用它來集中測試工作以防止發生任何代碼更改到那些依賴關係。查找Java類的所有傳遞依賴項,包括僅通過其接口使用的實現類
例如:
class MyApi {
MyDao md;
public void methodA() {
//do something with md;
}
}
interface MyDao { }
class MyDaoImpl implements MyDao { }
所以,如果我知道MyDaoImpl已被修改(比如從提交歷史),我知道MyApi.methodA使用MyDaoImpl,然後我的測試應重點檢查它。我需要MyApi.methodA()的依賴項列表,包括MyDao和MyDaoImpl。
到目前爲止,我已經嘗試了兩種工具 - https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jdeps.html和http://depfind.sourceforge.net/ - 它們很有前途,但似乎並未完全解決問題。對於這兩種工具,似乎如果一個類依賴於一個接口,就沒有內建的方式將該接口的實現包含爲傳遞依賴。
有沒有一種方法可以從任何工具中獲取這些信息而不需要大量定製?
你應該在你的方法中加入'md = new MyDaoImpl()'。否則'MyDaoImpl'沒有連接到你的應用程序。 – Nathan
實際的代碼使用spring來注入實現類,所以確實沒有新的MyDaoImpl()。我正在尋找一些方法來吸引MyApi正在使用的所有接口實現,即使沒有直接在代碼中創建。 – ab2000