java - 针对任意加载的类运行 JUnit 测试

标签 java reflection junit

作为一个更大项目的一部分,我正在尝试实现一些我不确定是否可能的事情,所以我渴望看看是否有人有任何建议!

整个系统:
总的来说,我的系统应该能够提供一个 JUnit 测试类,它与某些提供的接口(interface)相匹配。然后将给出不实现此接口(interface)的类,但需要检查它们是否能够(即它们是否实现了所有必要的方法)。如果是这样,应该进行一些转换,以便可以针对它运行 JUnit 测试类。

到目前为止我已经实现了:
- 使用 URLClassLoader
加载给定路径和名称的其他类的包 - 使用 JUnitCore 运行 JUnit 测试用例并返回结果的包

问题:
1. 首先,当测试设计为匹配接口(interface)时,如何针对实现该接口(interface)的类运行 JUnit 测试?我如何(在运行时)指示接口(interface)正在测试的实例是加载的类?

  1. 是否可以扩展它,以便我可以 i)验证它是否与接口(interface)匹配(我假设使用反射来检查相应的方法?)然后 ii)修改该类,以便可以使用它进行测试JUnit 测试类?

感谢您提供任何可能有助于解决此问题的建议。我很高兴我的描述可能有所欠缺,所以如果您有任何额外的信息可以帮助您给出任何答案,请发表评论!

最佳答案

您可以使用反射 API 做任何您想做的事情。听起来你应该从 the tutorial 开始,然后返回此处询问具体问题。给定一个 Class 对象,您可以检查它是否实现给定的接口(interface),创建它的实例,然后像对待任何其他类一样对待它。

编辑:我认为我没有从你的问题中得到这一点,但在这种情况下,你正在寻找 Proxy反射 API 的一部分。

关于java - 针对任意加载的类运行 JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5110537/

相关文章:

java - 有没有办法打印功能界面?

java - 容器管理事务的 Activity

java - 设置 webapprootkey no-web.xml

java - 不幸的是 MyApp 已停止。我该如何解决这个问题?

java - 反射获取特定类中带注释的所有方法

c# - 区分反射中的 OutAttribute 和 out 修饰符

maven-2 - 如何在 JUnit 测试中检索 Maven 属性?

.net - 为什么运行时将泛型类型显示为 "GenericType` n"?

java - 在 Spring 测试中使用 @Autowired NoSuchBeanDefinitionException

java - JUnit 的代码覆盖率