生成单元测试的值

时间:2016-02-01 11:48:42

标签: java unit-testing

我想通过Class生成独特,可重复,简单的值。这是我编写的用于验证Java bean的一部分,即firePropertyChange()已正确实现。

我已经开始实施

的内容了
class TestValueGenerator {
   private int counter;
   public Object getNextValue(Class<?> type) {
      counter++;
      if (type == byte.class) {
          return (byte)counter;
      } else if (type == short.class) {
          return (short)counter;
      } ... 
      // int, long, float, double, String, Date etc... 
   }
}

我建立在openpojo之上,这确实有现有的生成功能,但它们是使用当前播种的随机数生成实现的,我个人认为单元测试是不明智的......例如

value = com.openpojo.random.RandomFactory.getRandomValue(fieldEntry);

问题

  • 是否有内置的Java方法或外部库来执行此操作 - 我是否重新发明轮子?

3 个答案:

答案 0 :(得分:2)

您正在寻找的是基于属性的测试。它不是JDK中的内置版本,但是已经有框架可以做到这一点:

可能是其他人。

答案 1 :(得分:1)

虽然OpenPojo确实使用日期种子随时间保持随机,但它并不会阻止您覆盖其注册的生成器。 例如,要提供自己的字节/字节生成器,只需创建一个实现RandomGenerator的类,并在框架中注册它:

RandomGeneratorService service = ServiceRegistrar.getRandomGeneratorService()
service.registerRandomGenerator(new MyByteRandomGenerator());

例如,请参阅ObjectRandomGenerator

答案 2 :(得分:0)

使用 PODAM,

PODAM 是一个轻量级工具,用于用数据自动填充 Java POJO。这在开发单元测试时很方便。多亏了 PODAM,用户现在有了一个单线来完成所有的工作。 例如:

ax = df.reset_index().plot.area(x='Time', y=['RAM Used', 'RAM Cache + Buffer', 'RAM Free', 'SWAP Used'],figsize=(12,8))
ax.legend(loc=0,bbox_to_anchor=(1.0,1.0))

欲知更多详情 Podam tutorials