2011-02-16 75 views
3

我知道这个问题以前已经问过,但是现有的SO问题都没有为我的具体情况提供一个合适的答案。VB.NET测试框架的小项目?

我是空闲时间主要从事项目的独立开发人员。到目前为止,我已经接触了100个课程,并且我开始意识到测试许多课程正变得艰巨。特别是当我回去并添加运营商超载为=,<>,CTypeNot;实施IComparable(Of T),IEquatable(Of T),IEqualityComparer(Of T);并覆盖基本方法,如EqualsGetHashCode

我现在的测试方法是在一个按钮背后的虚拟表单上随机地涂写一些Debug.Print代码,运行项目,单击按钮,并确保调试窗口具有我的期望值。但这既乏味又开始变得浪费时间。

我知道我需要需要是为每一个班级起草一组专门针对该班级的测试来测试其功能。所以我去看看像NUnit,Gallio/MbUnit等测试框架,但我真的没有看到它们的价值。到目前为止,我似乎可以为每个实现的类编写一个专门的测试类,并将其包装在#If DEBUG/#End If块中,并将这些类链接到大型表单上的一组按钮以运行我的测试。

但是,这可能需要几周,以我目前的速度。所以我问他们如何看待这样的问题。我最好搞清楚如何将这些开源测试框架之一集成到我的项目中?或者我应该写一堆测试类并在某处输出他们的数据?

我使用VB Express 2010和VS 2010,这取决于我在哪台电脑上,所以我需要能够在两者中进行测试。我不打算很快将项目转换为C#,所以我会很感激与VB.NET兼容的答案。

谢谢!

回答

1

既然你没有举例说明你的测试看起来如何,我假设你的测试是设计合同风格,在DEBUG构建中执行某些功能时检查参数和(中间)结果。这是一个完美的解决方案,确保在执行特定任务时没有错误的结果。

在实现新功能时,调试输出很有价值。

您目前的解决方案的缺点是,如果功能是执行只有验证错误,并且手动验证调试输出。您必须手动触发每个功能,以确保程序仍按预期工作。

因为当你实现或扩展一些功能“A”,但如果您更改功能“B”不应与“A”代码的测试过程,通常只执行。通常“A”和“B”间接相关,而执行“B”将打破“A”。这被称为回归错误。

随着NUnit的和类似的系统,你可以确保如果你运行你的测试套件中的所有功能进行测试。

但是,使用NUnit编写和维护单元,集成和端到端测试要比应用DesignByContract测试或ManualVerifyDebugOutput测试困难得多。另一方面,当使用单元测试进行测试驱动开发时,您会为应用程序获得额外的体系结构优势。

+0

我不能举一个例子,因为我还没有写测试单元。我只是坐着,盯着我的代码,想知道最严格的测试方法是什么(在看过上述测试框架的几个教程之后)。我的很多代码只是直接的字符串解析。每个类处理一个特定的字符串,将字符串的元素解析为内部变量,并在调用类的ToString方法时将它们吐出。所以我的测试单位很大程度上需要检查输入和输出解析。 – Kumba 2011-02-19 00:38:31