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

发布于 2024-09-24 01:12:39 字数 154 浏览 3 评论 0原文

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

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

We're using a few libraries that include an xml parser library through maven. We think we've excluded most of those as we are using a newer version.

Is there some sort of JUnit library to check an ear/war for the presence of that jar and fail the test if its there? Or do we just need to write some code to unzip the archive and loop over the directory checking for it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

-黛色若梦 2024-10-01 01:12:39

通常,当发生这种情况时,两个 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());
}

如果旧 jar 中有一个类不在新 jar 中,那么您可以使用 ClassLoader.getSystemResource() 来查看是否该类位于您的类路径中。

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

Often when this happens, there are classes that appear in both jars, so you can check your classpath looking for duplicates. Given a class, you can see how often it appears on the classpath:

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());
}

If the old jar has a class that isn't in the new one, then you can use ClassLoader.getSystemResource() to see if that class is on your classpath.

Note that you need to make sure your JUnit test has all of the production jars in the classpath.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文