【问题标题】:C# datasource gives System.NullReferenceExceptionC# 数据源给出 System.NullReferenceException
【发布时间】:2014-03-07 21:57:55
【问题描述】:

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

【问题讨论】:

  • 你说 sPassword 为空,这是什么。TestContext.DataRow["Password"]?
  • 你在哪里设置你的TestContext ??你什么时候调用了 Register 方法?
  • 发布显示给您的实际错误消息
  • 您在哪一行得到异常?您需要更全面地解释,因为sPassword 不是空引用(this.TestContextthis.TestContext.DataRow["Password"] 更可能是)。

标签: c# visual-studio datasource


【解决方案1】:

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

【讨论】:

  • 谢谢 我如何直接在Register方法中加载元数据?
  • 我从我的测试中调用这个类方法
  • @Amir [DataSource] 旨在为每个测试使用外部数据。它并非旨在为 all 测试自动加载公共数据。您可以[DataSource] 属性添加到每个测试用例,或者您可以使用不同的过程来读取测试设置中的CSV 文件(配置文件?)。我不知道有什么方法可以使用[DataSource] 来加载常用的配置数据。
【解决方案2】:

数据源中的空字段被读取为null字符串所以语句如

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

被评估为:

string sPassword = null.ToString();

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 2020-01-20
    • 2015-01-29
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多