C#datasource给出了System.NullReferenceException

时间:2014-02-10 14:09:55

标签: c# visual-studio datasource

我曾尝试在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为空吗?

2 个答案:

答案 0 :(得分:0)

您的方法上没有[TestMethod()]属性,这让我想知道它是如何被调用的。如果您从每个测试中调用此方法,我不确定您的方法是否可行,因为测试框架可能正在查找测试方法本身的<{1}}属性 。您可能需要将DataSource属性移至每个测试,或直接在[DataSource]方法中加载元数据。

答案 1 :(得分:0)

数据源中的空字段读为null字符串,因此声明为

string sPassword = this.TestContext.DataRow["Password"].ToString();

评估为:

string sPassword = null.ToString();

空字段可能是因为字段仅包含空格,也来自数据源文件中的空行。请注意,CSV文件可以使用一个CRLF对完成,而不会将其视为空行。如果文件以两个或多个CRLF对结束,则文件以空行结束,这将引发报告的错误。