【问题标题】:Is there a way to automate junit bean property tests?有没有办法自动化junit bean属性测试?
【发布时间】:2012-08-08 03:29:50
【问题描述】:

让我们面对现实吧,编写 bean 属性测试可能是最糟糕的时间利用方式。但他们需要完成。

例如。如果测试 propNameString 属性,则调用如下:

testProperty(target, "propName", String.class);
testProperty(target, "propName", String.class, "expected initial");

将验证:

  • getset 方法存在。
  • 如果使用预期值,则对get 的测试调用assertEquals 以获得给定值。
  • (get,is)/set 方法按预期运行。

我可以开始编写这些实现,但我想知道是否有可用的东西来促进这一点。其他可选属性可用于验证 null 是否被允许或使用 JSR-303 bean 验证来验证字段。

【问题讨论】:

  • 测试 getter/setter 不是很详尽吗?需要吗?
  • 恕我直言,应该避免这种类型的测试。它将产生的工作量远远超过回报,更不用说需要维护的大量测试了。
  • 我完全同意你们两个。就我个人而言,我从不创建 getter/setter,而是依靠 NetBeans 来创建它们。每当我修改它们时,我都会删除先前的 getter/setter 并从字段中重新生成它们。但是代码覆盖率呢?
  • code-coverage 如果在其他测试用例中调用这些 getter/setter 将实现!
  • 自动化单元测试是不是有点违背了他们的目的?

标签: java unit-testing testing junit junit4


【解决方案1】:

有很多现有的代码库/sn-ps 可以使这更容易。通过快速搜索,我发现了一些有潜力的:

我看到有人采用我列出的第一个示例(很好而且简单,因为它只是一个类)并对其进行修改以更好地满足他们的需求。

【讨论】:

    【解决方案2】:

    如果你想手动操作,我可以考虑using reflection
    或参考这个答案以获得共同点:

    junit test method for getters & setters

    【讨论】:

      【解决方案3】:

      创建另一个 bean,使其看起来像您测试过的 bean。然后使用 apache-commons、festAssert、hamcrest 或任何其他可以使用反射进行比较的框架。不要自己写,我确定它已经完成了

      【讨论】:

        【解决方案4】:

        更新到上面的javabean-tester

        上面提到的(但已死的)codebox/javabean-tester 有一个active fork project,看起来相当不错...

        【讨论】:

          猜你喜欢
          • 2020-02-15
          • 2017-02-07
          • 2010-09-07
          • 1970-01-01
          • 2019-10-15
          • 1970-01-01
          • 1970-01-01
          • 2018-10-30
          • 2016-04-18
          相关资源
          最近更新 更多