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

C# System.NullReferenceException:对象引用未设置为对象的实例。在测试自动化执行期间,c#,automation,C#,Automation,如果有人能帮助我解决自动化执行过程中我面临的以下问题,那就太好了: 我试图根据excel中的行数引入测试用例循环。我正在使用VisualStudio中的数据驱动功能来实现这一点。 当我在“测试资源管理器”中执行时,这在VisualStudio环境中非常有效。但是,当我构建此项目的DLL并将其复制到自动化工具的工作文件夹(它在其中选择执行)时,会触发以下错误: System.Reflection.TargetInvocationException:调用的目标已引发异常。-->System.Null

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

我试图根据excel中的行数引入测试用例循环。我正在使用VisualStudio中的数据驱动功能来实现这一点。 当我在“测试资源管理器”中执行时,这在VisualStudio环境中非常有效。但是,当我构建此项目的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”值在应用程序中输入时,我得到的是NullReferenceExection


提前感谢。

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

我认为在DataRow值为
null
的情况下,可能是
ToString()
导致了这个问题

尝试使用此选项将在一定程度上帮助避免异常

 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());
     }
}

可能重复:代码是完美的,因为它在VisualStudio环境中执行时没有问题。我在使用此DLL从自动化工具执行时遇到问题。您的代码不会处理运行时异常。添加try-catch将防止由于未处理的异常而导致应用程序崩溃。请在异常日志中查找详细信息,您将了解它为什么会抛出该异常。感谢您的回复。我使用了try-catch,显示的代码片段用于说明我是如何使用数据驱动概念的。“Application.Control.Textbox().SetValue(fromDate);”行用于告知从excel读取的数据的使用位置。