我的目标是列出项目的公共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