技术开发 频道

VS Team Edition在其它单元中的测试

  最后,单元测试使用如下代码示例中的数据。注意SQL脚本必须部署到测试运行目录,然后才能由命令脚本执行。

[TestClass]
public class UnitTests
{
  
private TestContext tc;
  
public TestContext TestContext
  {
    
get { return tc; }
    
set { tc = value; }
  }

  [TestMethod]
  [DataSource(
    
@"Provider=SQLOLEDB;Data Source=.\sqlexpress;
    Integrated Security=SSPI;Initial Catalog=TestData
",
    
"CalcTestData")]
  [DeploymentItem(
"create.sql")]
  [DeploymentItem(
"destroy.sql")]
  
public void DataDrivenAddTest()
  {
    
int x = (int)TestContext.DataRow[0];
    
int y = (int)TestContext.DataRow[1];
    
int expected = (int)TestContext.DataRow[2];
    
int actual = MyUtils.Calc.Add(x, y);

    
bool shouldpass = (bool)TestContext.DataRow[3];
    
if (shouldpass)
      Assert.AreEqual
<int>(expected, actual);
    
else
      Assert.AreNotEqual
<int>(expected, actual);
  }
}

  DataSource属性设定关于连接字符串的信息,字符串指定包含数据驱动测试数据的测试数据库和表。这些数据对于TestContext对象的DataRow属性可用。在测试集合执行时,TestContext包含所有测试框架维护的有用信息。因为测试类提供TestContext类型的公共属性TestContext,所以测试框架提供当前TestContext对象的引用。每次调用测试都会读取CalcTestData表中的一行,TestContext类的DataRow属性表示每次调用的当前行。图11显示了测试的输出结果。


11  数据驱动测试输出

0
相关文章