我有一个采取数据结构并写入OutputStream的方法。我想编写一个单元测试,确保给定输入的该函数的输出不会意外改变。使用junit检查输出是否稳定的最佳方法是什么?
我觉得我的测试结构正确,使用JUnit理论。我的@DataPoints是一对标识符和示例数据结构,并且我有一个@Theory方法的输出将与签入到使用标识符使用getResourceAsStream获取的版本控制的文件相同。
然而,痛苦的部分首先是生成这些文件。我目前非常丑陋的解决方案是一个名为WRITE_TEST_OUTPUT的布尔常量,通常是错误的。当我想重新生成输出文件(或者是因为我更改了@DataPoints的列表,或者方法的期望行为已经改变),我将此常量设置为true,并且有一个测试,当这是真时,再次运行该函数将当前输出文件写入/ tmp中的目录。然后它断言该常数是错误的,所以我不会意外检查一个常数为真的版本。
让代人伪装成测试是非常方便的,所以我可以在Eclipse中运行它,但它看起来像一个可怕的kludge。这似乎是人们必须始终做的事情 - 其他人找到了什么样的解决方案?
我不知道如何运行测试可以找出它应该保存在Maven模块中的文件 - getResource()将返回目标下的目录,而不是在src /测试/资源。 – 2011-12-18 10:57:36