Visual studio 2010 VisualStudio单元测试:从另一个测试获取数据?

Visual studio 2010 VisualStudio单元测试:从另一个测试获取数据?,visual-studio-2010,unit-testing,Visual Studio 2010,Unit Testing,我对单元测试相当不熟悉,所以如果我用错了方法,请告诉我 基本上,我有一系列的测试,我正在一组相关的方法上运行。我想检查getAll()save()和get(Id)方法是否正常工作。问题是,如果save()函数起作用,我不确定如何将生成的元素Id放入针对get(Id)方法运行的测试中 我是在正确的轨道上,还是违反了单元测试应该如何工作的一些规则?使用VisualStudio单元测试可以使用哪些机制来执行此操作?有两种方法可以继续。首先,您可以编写3个独立的测试来单独测试每个函数。这种测试方法的优点

我对单元测试相当不熟悉,所以如果我用错了方法,请告诉我

基本上,我有一系列的测试,我正在一组相关的方法上运行。我想检查
getAll()
save()
get(Id)
方法是否正常工作。问题是,如果
save()
函数起作用,我不确定如何将生成的元素Id放入针对
get(Id)
方法运行的测试中


我是在正确的轨道上,还是违反了单元测试应该如何工作的一些规则?使用VisualStudio单元测试可以使用哪些机制来执行此操作?

有两种方法可以继续。首先,您可以编写3个独立的测试来单独测试每个函数。这种测试方法的优点是在出现问题时粒度更好。例如,使用3-test方法,您可以得到显示2/3方法(如save和getAll)正在工作而另一个方法不工作的结果

另一种方法是编写一个测试,在一个测试中完成(和测试)所有三种方法。这种方法只会告诉您第一件失败的事情,这对您来说可能已经足够了

值得注意的是,这个场景意味着在测试运行期间触摸数据库,我强烈反对这样做。如果是这种情况,我将改为以“when I get()”的形式编写测试,然后生成以下数据库访问代码(如T-SQL)…”而不是实际对数据库运行数据库查询

[TestMethod]
public void TestGetAll( )
{
   Assert.areEqual("SELECT * FROM People", People.CreateSQLForGetAll());
}

有关此单元测试技术的更多信息。

最佳实践是,每种测试方法都完全独立于其他测试方法,即使在测试方法的运行顺序方面也是如此。那么为什么Visual Studio提供有序测试机制呢?因为Microsoft对单元测试没有很好的理解。阅读一篇好的介绍。