如果有人能帮助我解决自动化执行过程中遇到的以下问题,那就太好了
我正在尝试根据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。
谢谢。
答案 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());
}
}