将C#代表转变为单元测试

时间:2011-07-23 23:02:42

标签: c# unit-testing

为了减少代码重复,我想从各种来源以编程方式生成单元测试。我能想到的一个简单方法是从一个解析一些配置信息的方法中生成一大堆委托,并用[TestMethod]属性标记所有那些由visual studio测试框架运行的委托。

我的动机是尽可能多地使用visual studio的测试报告工具,因为我可以使用一些C#的反射工具为测试编写自己的报告层,但我不愿意。我的解决方案看起来非常优雅和简单,但我无法通过visual studio的测试框架来了解我到底想要做什么,所以有谁知道如何去做我想做的事情?

3 个答案:

答案 0 :(得分:1)

我认为如果您真的想要生成测试,那么最好使用类似T4 templates的方式生成测试。换句话说,使用代码生成并创建测试装置和方法,以便像运行任何其他测试用例一样运行它们。

答案 1 :(得分:1)

您可能需要考虑Microsoft Research的{​​{3}}(以及可能Pex的遗留代码)。 Pex是一个研究项目,可以自动生成具有高代码覆盖率的单元测试,并且据称可以为测试选择有趣的输入和输出。我猜那里有一些情报。 :)

我没有亲自使用它,但我从一些同行那里听说Pex和Moles非常有趣并帮助了他们。值得一看。

希望这有帮助!

答案 2 :(得分:0)

如果这不能完全回答你的问题,我很抱歉,但我认为自动生成单元测试是解决这个问题的错误方法。
单元测试是一种有效的方法,可以帮助避免回归,并提供有关如何使用代码的文档。当你自动生成你的测试时,你会得到一堆测试,但是如果它们失败了你就不知道是否存在真正的错误而你最终会遇到很多失败的测试,你不知道它们为什么会失败或如何制作它们通过。最后你可能会删除所有测试 - 因为它们“不起作用”。

说完了 - 从Typemock中试用Armadillo - 这是一个根据用户的行为编写测试的工具