【问题标题】:guava-testlib future version JARguava-testlib 未来版本 JAR
【发布时间】:2012-10-09 01:38:11
【问题描述】:

今天,目前的番石榴版本好像是:

release is 13.0.1, August 3, 2012.

但我检查了以下来源:

git clone https://code.google.com/p/guava-libraries/

并对我看来非常有用的测试工具产生了兴趣:

http://code.google.com/p/guava-libraries/source/browse/guava-testlib/src/com/google/common/testing/NullPointerTester.java

我正在尝试验证我的所有方法都讨厌 null,就像 Doug Lea (http://gee.cs.oswego.edu/dl/html/vita.html) 似乎做的一样,除非 Joshua Bloch 错误地引用了他 (http://www.youtube.com/watch?v=ZeO_J2OcHYM#t=26m35s) 的“空敌对”。

无论如何,NullPointerTester.java 似乎很完美,所以我正在尝试将它构建到我的项目中。

遵循依赖项(例如NullPointerTester -> Invokable<?, ?>,-> ...)很乏味,因为我遇到了 @since 14.0 的类,基本上属于未来版本。

构建下一个/未来版本的 Guava 的自包含 JAR 的最佳方法是什么,所有依赖项都为我处理好?注意:来源似乎是git上的“全部”...


你可以在这里停止阅读。

我迫不及待地想做这样的事情,我觉得这真的很酷:

注意:缺少的是“安全检查”,如“如果构造函数已设为私有,请检查我是否无法反射调用它......

如果我是一个更好的编码器,我会做出贡献,但这是我所能做的,而且很差,尽管意图应该很清楚?

static boolean isDefaultConstructorDisabled(Class<?> type) {
  boolean isDefaultConstructorDisabled = false;
  Constructor<?>[] declaredConstructors = type.getDeclaredConstructors();
  Constructor<?> defaultContructor = declaredConstructors[0];
  defaultContructor.setAccessible(true);
  try {
    defaultContructor.newInstance();
  } catch (InvocationTargetException invocationTargetException) {
    Throwable cause = invocationTargetException.getCause();
    if (cause instanceof UnsupportedOperationException
        && cause.getMessage().contains(
            ErrorMessage.DefaultConstructor.DISABLED)) {
      isDefaultConstructorDisabled = true;
    }
  } catch (Throwable throwable) {
    throwable.printStackTrace();
  }
  return isDefaultConstructorDisabled;
}

【问题讨论】:

    标签: java unit-testing testing null guava


    【解决方案1】:

    您是否尝试在 Maven 中查找?

    http://search.maven.org/#browse%7C-723200679

    我认为 guava-testlib 是包含 NullPointerTester 的。你可以抓住 13.0.1 的罐子。

    http://search.maven.org/#browse%7C1590928164

    【讨论】:

    • 我有 guava-13.0.1.jar 文件,guava-testlib 的一些依赖项,在 13.0.1 中甚至没有被导出,虽然是 @since 14...(例如 Invokable)。我必须承认我不知道如何在基础知识之外使用 Maven。
    • NullPointerTester 已经存在了一段时间。那个 13.0.1 jar 不应该依赖任何 @since 14 的东西。您在 git 中看到的是最新的,其中包括自 13.0.1 版本以来的更改,包括他们为 NullPointerTester 使用 Invokable 所做的更改(8 月 31 日)。您是否尝试在您的代码中使用它并且它没有编译?
    • 好吧,即使 guava-13.0.1.jar 在我的项目(或类路径,来自 CLI)中,我什至没有在可访问的 API 上“看到”NullPointerTester...你以前用过这个类吗?
    • 对不起 - 我想说你需要从我链接的那个页面下载那个 testlib jar。除了主要的 guava jar 之外,您还需要 guava-testlib-13.0.1.jar。既然你已经检查了源代码,看看顶级文件夹是如何命名的 guava、guava-testlib、guava-testing 等?对于其中的每一个,在 Maven 上都有带有已编译代码的版本化 jar。测试实用程序与您所拥有的主发布 jar 分开打包。
    • 另外,是的,我在几个月前尝试过 NullPointerTester。如果 testlib 是错误的 jar,那么我很抱歉;在回答之前我所做的只是验证 testlib jar 包含它的 .class 文件。
    【解决方案2】:

    如果您克隆了整个 Guava 存储库,那么 v13.0.1 标记将具有 guava-testlib,特别是 NullPointerTester,从 13.0.1 开始,它应该可以工作 -- 不是吗?

    【讨论】:

      猜你喜欢
      • 2011-12-31
      • 2019-12-09
      • 2018-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多