我曾尝试在C#中使用Datasource并得到:
System.NullReferenceException
我的代码是:
public class Registration:Init
{
private TestContext testContextInstance;
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\DataSource\\RegistrationTestData.csv", "RegistrationTestData#csv", DataAccessMethod.Sequential), DeploymentItem("DataSource\\RegistrationTestData.csv")]
public String Register(String sClientlabel,UserRegistrationDetails uUserdetailes,StepResult sResults)
{
String sActivation = null;
string sPassword = this.TestContext.DataRow["Password"].ToString();
String susername = TestContext.DataRow["BrainLab ID"].ToString();}
有人知道为什么sPassword为空吗?
答案 0 :(得分:0)
您的方法上没有[TestMethod()]
属性,这让我想知道它是如何被调用的。如果您从每个测试中调用此方法,我不确定您的方法是否可行,因为测试框架可能正在查找测试方法本身的<{1}}属性 。您可能需要将DataSource
属性移至每个测试,或直接在[DataSource]
方法中加载元数据。
答案 1 :(得分:0)
数据源中的空字段读为null
字符串,因此声明为
string sPassword = this.TestContext.DataRow["Password"].ToString();
评估为:
string sPassword = null.ToString();
空字段可能是因为字段仅包含空格,也来自数据源文件中的空行。请注意,CSV文件可以使用一个CRLF对完成,而不会将其视为空行。如果文件以两个或多个CRLF对结束,则文件以空行结束,这将引发报告的错误。