Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何基于可选依赖项验证行为_Java_Junit_Classpath - Fatal编程技术网

Java 如何基于可选依赖项验证行为

Java 如何基于可选依赖项验证行为,java,junit,classpath,Java,Junit,Classpath,根据可选deptency的可用性,我有一些行为不同的代码(使用Class.forName(…)检查) 是否有可能在junit中验证此行为,或者是否有一个库来促进此操作 我希望有比用自定义类加载器引导新junit进程更好的方法 或者,我可以模拟一个返回要检查的类名的方法。然后在测试中,我可以使用虚拟类或真实类。尽管如此,我还是更喜欢使用缺少可选依赖项的“真实”测试。通过创建自定义类加载器,您可以完全控制提供给类/方法的类路径,该类/方法需要检查某个类的存在以适应其行为 从中查看这段代码,它允许他们

根据可选deptency的可用性,我有一些行为不同的代码(使用
Class.forName(…)
检查)

是否有可能在junit中验证此行为,或者是否有一个库来促进此操作

我希望有比用自定义类加载器引导新junit进程更好的方法


或者,我可以模拟一个返回要检查的类名的方法。然后在测试中,我可以使用虚拟类或真实类。尽管如此,我还是更喜欢使用缺少可选依赖项的“真实”测试。

通过创建自定义类加载器,您可以完全控制提供给类/方法的类路径,该类/方法需要检查某个类的存在以适应其行为

从中查看这段代码,它允许他们动态地改变类路径,甚至可以选择反转类路径解析的默认顺序(通常是先父级)。使用这样的策略,您可以使用如下语句轻松地模拟类路径

ClassLoader classLoader = Thread.currentThread().getContextClassLoader() 
ClassLoader mutableClassLoader = new MutableURLClassLoader(urls, classLoader);
// ... manipulate the classpath in mutableClassLoader ...
Thread.currentThread().setContextClassLoader(mutableClassLoader);
// everything is set up, you can now call the method you want to test
如果需要,您甚至可以使用动态生成合成类