是否有JUnit库/实用程序来检测库的存在?

是否有JUnit库/实用程序来检测库的存在?,junit,Junit,我们正在使用一些库,这些库通过maven包含一个xml解析器库。我们认为我们已经排除了其中的大部分,因为我们正在使用一个更新的版本 是否有某种JUnit库来检查ear/war中是否存在jar,如果存在jar,则测试失败?或者我们只需要编写一些代码来解压归档文件并在目录上循环检查它吗?经常发生这种情况时,两个JAR中都会出现类,因此您可以检查类路径以查找重复项。给定一个类,您可以看到它出现在类路径上的频率: public void testSomeClassInClassPathOnce() {

我们正在使用一些库,这些库通过maven包含一个xml解析器库。我们认为我们已经排除了其中的大部分,因为我们正在使用一个更新的版本


是否有某种JUnit库来检查ear/war中是否存在jar,如果存在jar,则测试失败?或者我们只需要编写一些代码来解压归档文件并在目录上循环检查它吗?

经常发生这种情况时,两个JAR中都会出现类,因此您可以检查类路径以查找重复项。给定一个类,您可以看到它出现在类路径上的频率:

public void testSomeClassInClassPathOnce() {
  String className = SomeClass.class.getName();
  String path = className.replace('.', File.separatorChar) + ".class";
  Enumeration<URL> urls = ClassLoader.getSystemResources(path);
  assertTrue(urls.hasMoreElements());
  urls.nextElement();
  assertFalse(urls.hasMoreElements());
}
public void testsomeclassinclassspathonce(){
字符串className=SomeClass.class.getName();
字符串路径=className.replace('.',File.separatorChar)+“.class”;
枚举URL=ClassLoader.getSystemResources(路径);
assertTrue(url.hasMoreElements());
url.nextElement();
assertFalse(url.hasMoreElements());
}
如果旧jar中有一个类不在新jar中,那么您可以使用
ClassLoader.getSystemResource()
查看该类是否在您的类路径上

注意,您需要确保JUnit测试在类路径中包含所有的生产JAR