System.NullReferenceException:对象引用未设置为对象的实例。在执行自动化测试期间

时间:2018-08-22 11:06:45

标签: c# automation

如果有人能帮助我解决自动化执行过程中遇到的以下问题,那就太好了

我正在尝试根据Excel中的行数引入测试用例循环。我正在Visual Studio中使用数据驱动功能来实现此目的。 当我在“测试资源管理器”中执行时,这在Visual Studio环境中完美运行。但是,当我构建该项目的DLL并将其复制到自动化工具的工作文件夹(从中选择执行位置)时,会触发以下错误:

System.Reflection.TargetInvocationException:调用的目标引发了异常。 ---> System.NullReferenceException:对象引用未设置为对象的实例。

请参见以下代码段:

[DataSource("System.Data.Odbc", "Dsn=Excel Files;Driver={Microsoft Excel Driver (*.xlsx)};dbq=J:\\Automation_Working_Directory\\Automation_Files_Demo\\Test_Report_01Base.xlsx;defaultdir=.;driverid=790;maxbuffersize=2048;pagetimeout=5;readonly=true", "SrsReportRunController_Dialog$", DataAccessMethod.Sequential)]
    [TestMethod]
    public void Test_Report_01()
    {
        #region Fetch data from Excel file

        string fromDate = TestContext.DataRow["From date"].ToString();
        string startDate = TestContext.DataRow["Report period start date"].ToString();
        string toDate = TestContext.DataRow["To date"].ToString();

        #endregion Fetch data from Excel file

        Application.Control.TextBox().SetValue(fromDate);}

当我尝试使用“ fromDate”值输入应用程序时,我得到了NullReferenceExecption。

谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您应该在代码中添加try-catch,这将帮助您识别确切的错误行号

我认为,如果DataRow值为ToString(),可能是null引起的问题。

尝试使用Convert Class,这将有助于在某种程度上避免异常

 public void Test_Report_01()
 {
     try{
         #region Fetch data from Excel file

        string fromDate = Convert.ToString(TestContext.DataRow["From date"]);
        string startDate = Convert.ToString(TestContext.DataRow["Report period start date"]);
        string toDate = Convert.ToString(TestContext.DataRow["To date"]);

        #endregion Fetch data from Excel file

        Application.Control.TextBox().SetValue(fromDate);
     }
     catch(Exception e){
         Console.WriteLine(e.toString());
     }
}