如何测试类在C#中是否正常工作
本文关键字:常工作 工作 是否 测试类 | 更新日期: 2023-09-27 17:59:46
我写了一个类,想测试它是否工作良好。目前,我认为最好的方法是创建引用主项目的新控制台应用程序,然后为我的类创建新实例并将其搞砸。与其他方法不同的是,这种方法启用了IntelliSense,使用关键字(类没有全名)和调试。
有人知道如何在不制作新的控制台应用程序的情况下以更方便的方式做到这一点吗?
使用控制台应用程序测试您的类就是我所说的"穷人的单元测试"
你想要做这种测试是正确的,我(以及SO上的大多数其他人)建议使用某种单元测试框架来帮助你。(模拟可能对你很重要,也很有用。)
事情是这样的。无论你使用什么框架,或者如果你使用控制台应用程序来测试你的代码,你都必须创建一个单独的项目,或者某种单独的、重要的代码块,才能正确、独立地执行测试。这只是过程的一部分。这是一项投资,但不要让额外的工作阻碍你去做。这将在未来一段时间内节省大量时间和皮肤。甚至可能在下周。
此外,在查找单元测试时,请确保也学习测试驱动开发(TDD)
单元测试绝对是最好的选择。根据您运行的VS版本,可能内置了单元测试功能,或者您可能必须使用NUnit等附加工具。这两个选项都很好,可以让你全面测试你的类。
还要记住,从长远来看,一套全面的单元测试将使重构变得更加容易。如果你重构并破坏了单元测试,你就知道你在某个地方做了一个boo-boo。:)
单元测试是前进的方向>这是一篇很好的入门文章。
单元测试的基本概念是,隔离并调用代码的特定部分,并断言结果是预期的且在合理范围内。例如,假设您有一个简单的方法来返回浮点数的平方:
public float Square(float value)
{
return value * value;
}
一个合理的单元测试是该方法返回正确的值,处理负值等:
Assert.AreEqual(25, Square(5));
Assert.AreEqual(100, Square(-10));
单元测试也是了解代码如何处理边缘情况的好方法:
Assert.Throws<OverflowException>(Square(float.MaxValue));
如果您正在使用VS 2010,请查看Pex和Moles。。。
http://research.microsoft.com/en-us/projects/pex/
控制台应用程序方法更像是类的测试工具,这很好。
但是您也可以使用单元测试框架来测试您的类。VisualStudio有一个内置的,或者您可以利用类似NUnit的东西。
此外,请尝试Visual Studio中的对象测试台。它应该允许您创建一个新实例,修改和查看属性,并调用一些方法。不过,它通常只适用于非常简单的应用程序。
如果您使用Visual Studio 2008或更高版本,您将能够使用MSTest框架测试代码:
1.打开测试视图窗口:测试/Windows/Test View;
2.添加新的单元测试项目:右键单击Solution Explorer/Add/new中的Solution项目/测试项目;
3.删除创建的测试项目中除UnitTest.cs文件外的所有文件;
4.在[TestMethod]属性下的方法中编写单元测试:
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
var ranges = new Ranges();
int sum = ranges.CountOccurrences(11);
Assert.AreEqual(128, sum);
}
}
5.从第1页中添加的测试视图窗口运行测试
6.参见测试/Windows/test results窗口中的测试结果