TDD用于随机算法

Szy*_*ski 2 java testing tdd unit-testing

我的测试有问题.有一种算法用于一些奇特的程序.该算法从一个范围[-999,999; +999,999],将其视为表中的id号,并在数据库中执行一些随机操作.这意味着我需要多次调用该方法以确保随机数分布正确.

我想用TDD编写所有代码(只是为了更多地学习它).

问题是我不知道如何用TDD原理测试算法.

根据TDD,如果不首先编写测试,则不应运行代码.

我想到的解决方案之一是在主类中使用一个名为debug(text)的伪方法.此方法在生产代码中不执行任何操作.然而,我会使这个方法的子类重载,这次它会存储一些有趣的信息.以后可以通过测试使用此信息来确定函数是否正常工作.数据库连接将被模拟,不会执行任何操作.

另一种解决方案是创建一个模拟的数据库连接,该连接将存储稍后在测试中使用的有趣信息.然而,创建这样的连接将是如此巨大的工作,我认为不值得花时间.

稍后将进行集成测试以检查数据库是否正确更改.但集成测试不是TDD的一部分.

我是否进入了TDD失败且无用或难以使用的地方?

Dav*_*ton 8

这是你的随机数函数吗?

它是:随机数发生器应该在使用它的任何东西之外进行测试.

它不是:你根本不应该测试它,除非你真的需要验证它是多么随机.IMO不是很好的投资回报率,但它完全取决于您的实际需求.

数据库功能应该假设RNG实际上是R,并且应该与RNG 分开测试 - 在测试期间您可能不想使用RNG.至少,您可能想要使RNG播种以使测试可重复 - 这可能使正确性更难以验证.