c#-ClassInitialize上的数据驱动单元测试
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-ClassInitialize上的数据驱动单元测试,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2913字,纯文字阅读大概需要5分钟。
内容图文
![c#-ClassInitialize上的数据驱动单元测试](/upload/InfoBanner/zyjiaocheng/677/b231f5516bfd44d4844e6242d90810c2.jpg)
我试图每次使用不同的值运行一些测试.例如:我有3种方法:methodA,methodB和methodC.我想在不同的索引位置运行两次每个方法.我有TestInitialize和ClassInitialize方法.
>我尝试使用ClassInitialize,但未成功;我收到编译时错误,因为我的测试上下文不是静态的.
public TestContext TestContext
{
get { return testContextInstance; }
set { testContextInstance = value; }
}
[DeploymentItem("UI.Framework.IntegrationTests\\ExpectedValues.xml")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\ExpectedValues.xml", "searchTerm2", DataAccessMethod.Sequential)]
[ClassInitialize()]
publicstaticvoid ClassInitialize(TestContext context)
{
string indexPath = TestContext.DataRow[0].ToString();
bool isSuccess1 = SearchApiTestsHelper.InitializeSearchEngine(indexPath, null);
Assert.IsTrue(isSuccess1);
}
我做不到
>我尝试使用TestInitialize,但未加载数据行,它为null.
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
"|DataDirectory|\\ExpectedValues.xml",
"indices",
DataAccessMethod.Sequential),
TestInitialize()]
public void MyTestInitialize()
{
string indexPath = TestContext.DataRow[0].ToString();
bool isSuccess1 = SearchApiTestsHelper.InitializeSearchEngine(indexPath, null);
Assert.IsTrue(isSuccess1);
}
>我知道我可以将每个方法设置为运行两次,但是,某些方法需要不同的数据进行验证.例如method2仍需要为每个索引位置运行两次,并且每次运行都声明来自数据源的一组期望值.
[DeploymentItem("UI.Framework.IntegrationTests\\ExpectedValues.xml")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
"|DataDirectory|\\ExpectedValues.xml",
"pb1", DataAccessMethod.Sequential),
TestCategory("Integration")]
[TestMethod]
public void PhraseBoosting()
{
expectedVal = TestContext.DataRow[0].ToString();
}
如何将其归档?
解决方法:
假设这样的XML文件:
<Values>
<searchTerm2>this is search term 2</searchTerm2>
<indices>these are the indices</indices>
<pb1>personal best?</pb1>
</Values>
您可以像这样访问这些值:
[TestClass]
public class UnitTest1
{
public TestContext TestContext
{
get;
set;
}
//[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\ExpectedValues.xml", "Values", DataAccessMethod.Sequential)]
//[ClassInitialize]
//public static void ClassInitialize(TestContext testContext)
//{
// string indexPath = testContext.DataRow["searchTerm2"].ToString();
// Console.WriteLine(indexPath);
//}
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\ExpectedValues.xml", "Values", DataAccessMethod.Sequential)]
[TestInitialize]
public void TestInitialize()
{
string indexPath = TestContext.DataRow["indices"].ToString();
Console.WriteLine(indexPath);
}
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\ExpectedValues.xml", "Values", DataAccessMethod.Sequential)]
[TestMethod]
public void TestMethod1()
{
string indexPath = TestContext.DataRow["pb1"].ToString();
Console.WriteLine(indexPath);
}
}
类的initialize方法似乎不起作用.我不确定这是否是设计使然.
内容总结
以上是互联网集市为您收集整理的c#-ClassInitialize上的数据驱动单元测试全部内容,希望文章能够帮你解决c#-ClassInitialize上的数据驱动单元测试所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。