我应该如何处理我们无意修复的错误的单元测试?

时间:2015-01-06 16:41:54

标签: unit-testing xunit.net

我们的代码库中有很大一部分没有任何单元测试。我们一直在为我们添加的任何新代码编写单元测试,但我们现在才开始回过头来为现有代码添加单元测试。写作时运行单元测试现有的计算方法,我发现了一个错误:有一个特定的输入边缘情况,计算无法正确处理。

之前从未检测到该错误,因为它在应用程序中实际上无法访问;遇到错误的特定输入是一组输入的子集,这些输入是微不足道的并且直接处理而不是被发送到稍微昂贵的计算方法。我的老板已经决定,由于无法从应用程序中查找错误,因此不值得通过计算方法来解决它。

使用XUnit,我应该如何最好地将这个错误标记为我们已经知道但却选择不修复的错误?失败的测试会破坏我们的构建自动化,所以我不能保持原样。失败的输入当前是作为PropertyData的{​​{1}}的一部分生成的。

XUnit是否有针对此的特殊指标?我是否应该调整为Theory生成输入的方法以排除该情况,添加解释原因的注释,然后放入覆盖该情况的跳过的PropertyData

2 个答案:

答案 0 :(得分:2)

您不应该提供单元测试,提供您的要求所声明的输入数据。在这种情况下,您没有错误,您只需要说明不支持给定输入并且被视为无效。

如果您真的想要,您可以使用提供无效输入和断言失败的测试,如果您选择明确要求此输入必须失败。如果您不想这样做,只是不要为您没有的用例创建测试。

答案 1 :(得分:1)

在不运行测试之间跳过事实平衡,但留下明显的警告,这是将来需要处理的事情。 或者,您可以对测试进行分类并将跑步者配置为跳过它,例如,参见类别示例v1v2