我知道Visual Studio提供了一些单元测试的好东西。我如何使用它们,你如何使用它们?我应该了解单元测试(假设我什么都不知道)。
This question是类似的,但它没有解决Visual Studio可以做的事情,请不要因此而将其标记为重复。发布为社区Wiki,因为我不是想成为一名代表妓女。
答案 0 :(得分:5)
最重要的区别在于,MSTest支持内置于Visual Studio中,可直接提供单元测试,代码覆盖和模拟支持。为了在外部(第三方)单元测试框架中执行相同类型的事情,通常需要多个框架(单元测试框架和模拟框架)和其他工具来进行代码覆盖分析。
使用MSTest单元测试工具的简单方法是打开要为其创建单元测试的文件,在编辑器窗口中单击鼠标右键,然后从上下文菜单中选择“创建单元测试...”菜单。我更喜欢将我的单元测试放在一个单独的项目中,但这只是个人偏好。这样做会创建一种“模板”测试类,它将包含测试方法,允许您测试类的每个函数和属性。此时,您需要确定测试通过或失败的含义(换句话说,确定在给定一组输入时应该发生什么)。
通常,您最终会编写与此类似的测试:
string stringVal = "This";
Assert.IsTrue(stringVal.Length == 4);
这表示对于名为stringVal的变量,在赋值后,Length属性应该等于4。
另一个主题中列出的资源应该是了解一般单元测试的一个很好的起点。
答案 1 :(得分:2)
VS中的单元测试结构类似于NUnit的用法。它的一个有趣(和有用)功能确实与NUnit显着不同。 VS单元测试可以与未编写单元测试的代码一起使用。
您可以在编写应用程序之后构建单元测试框架,因为测试结构允许您从外部引用方法调用并使用加速和拆卸代码来准备测试环境。例如:如果某个类中的方法使用该方法外部的资源,则可以在斜坡类(VS为您创建)中创建它们,然后在单元测试类中测试它(也创建) VS为你服务。当测试结束时,拆除课程(再次......由VS为您提供)将释放资源并进行清理。整个过程存在于您的应用程序之外,因此不会干扰代码库。
VS单元测试框架实际上是一个非常好实现且易于使用的。最重要的是,您可以将它与未考虑单元测试的应用程序一起使用(对于NUnit来说这是不容易的)。
答案 2 :(得分:2)
我要做的第一件事是下载TestDriven.Net的副本以用作测试运行器。这将添加一个右键单击菜单,通过右键单击测试方法并选择Run Test(s),可以运行单个测试。这也适用于类中的所有测试(在类中右键单击,但在方法外部),命名空间(右键单击项目或类外的命名空间)或整个解决方案(右键单击解决方案)。它还增加了使用coverage(内置或nCover)或同一右键单击菜单中的调试器运行测试的功能。
就设置测试而言,通常我会坚持每个项目的一个测试项目和每个测试类的一个测试类。有时我会为跨越很多类的方面创建测试类,但通常不会。我创建它们的典型方法是首先创建类的骨架 - 没有属性,没有构造函数,但是我想要测试的第一个方法。此方法只会抛出NotImplementedException。
创建类骨架后,我在测试中使用右键单击Create Unit Tests。这会打开一个对话框,允许您创建新的测试项目或选择现有的测试项目。我创建并适当地命名一个新的测试项目,并让向导创建类。完成此操作后,您可能还想在测试项目中为类创建私有访问器函数。如果您的班级发生重大变化,有时需要更新(重新创建)。
现在您有一个测试项目和第一次测试。首先修改测试以定义方法的所需行为。编写足够的代码(只是勉强)通过测试。继续编写测试/编写代码,为方法指定更多行为,直到定义了方法的所有行为。然后根据需要移动到下一个方法或类,直到您有足够的代码来完成您正在处理的功能。
您可以根据需要添加更多不同类型的测试。您还可以设置源代码控制,以要求在签入之前通过部分或全部测试。