如何测试C#中的类是否正常工作?

时间:2011-06-20 15:27:24

标签: c# .net visual-studio

我写了一堂课,想测试它是否运作良好。现在我认为最好的方法是创建新的控制台应用程序引用主项目,然后创建我的类的新实例并搞乱它。这种方法与其他方法不同,它使用关键字(没有类的全名)和调试来实现IntelliSense。

任何人都知道如何以更方便的方式执行此操作而无需创建新的控制台应用程序?

7 个答案:

答案 0 :(得分:6)

使用控制台应用程序来测试您的课程,我称之为"poor man's unit test."

你正走在正确的轨道想要进行这种测试,我(以及其他大多数人)会建议使用a unit testing framework of some sort来帮助你。 (Mocking对您来说也很重要且有用。)

但事情就是这样。无论您使用什么框架,或者如果您使用控制台应用程序来测试代码,您都必须创建一个单独的项目,或者某种单独的重要代码块,以便能够正确且独立地执行测试。这只是整个过程的一部分。这是一项投资,但不要让额外的工作阻止你这样做。它将在未来一段时间内节省大量时间和皮肤。甚至可能在下周。

此外,当您查找单元测试时,请确保同时进行test-driven development(TDD。)

的研究。

答案 1 :(得分:2)

单元测试绝对是最佳选择。根据您运行的VS的版本,可能内置了单元测试功能,或者您可能必须使用其他工具,如NUnit。这两个选项都很好,可以让你完全测试你的课程。

请记住,从长远来看,一整套单元测试将使重构变得更加容易。如果你重构并打破你的单元测试,你知道你已经在某个地方做了一个嘘声。 :)

答案 2 :(得分:2)

单元测试是前进的方向>这是一个很好的introductory article

单元测试的基本概念是,您隔离并调用代码的特定部分,并声明结果是预期的并且在合理范围内。例如,假设您有一个简单的方法来返回浮点数的平方:

public float Square(float value)
{
    return value * value;
}

合理的单元测试是该方法返回正确的值,处理negetive值等:

Assert.AreEqual(25, Square(5));
Assert.AreEqual(100, Square(-10));

单元测试也是查看代码如何处理边缘情况的好方法:

Assert.Throws<OverflowException>(Square(float.MaxValue));

答案 3 :(得分:1)

如果您使用的是VS 2010,请查看Pex和Moles ......

http://research.microsoft.com/en-us/projects/pex/

答案 4 :(得分:0)

控制台应用程序方法更适合您的班级测试工具,这很好。

但您也可以使用单元测试框架来测试您的课程。 Visual Studio内置了一个,或者你可以利用像NUnit这样的东西。

答案 5 :(得分:0)

另外,尝试使用Visual Studio中的Object Test Bench。它应该允许您创建新实例,修改和查看属性,以及调用某些方法。它通常只适用于非常简单的应用程序。

答案 6 :(得分:0)

如果您使用Visual Studio 2008或更高版本,您将能够使用MSTest框架测试您的代码:

1.打开测试视图窗口:测试/ Windows /测试视图;

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.在Test / Windows / Test Results窗口中查看测试结果