我需要运行Coded UI测试,该测试是从控制台应用程序驱动的数据。如果我将Coded UI测试作为独立运行,那么[DataSource]可以访问CSV文件中的值。然而,如果我从控制台应用程序调用Coded UI,我会得到未处理的异常:System.NullReferenceException:对象引用未设置为对象的实例。 - 因为TestContext.DataRow为null。
这是代码
中的代码段Program.cs(控制台应用):
public class Program
{
static void Main(string[] args)
{
Playback.Initialize();
CodedUITestWarmup test = new CodedUITestWarmup();
test.WarmUp();
Playback.Cleanup();
}
}
CodedUITestWarmup.cs(编码ui测试):
public class CodedUITestWarmup
{
[TestMethod]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", @"|DataDirectory|\DataFiles\warmup.csv", "warmup#csv", DataAccessMethod.Sequential)]
public void WarmUp()
{
InitializeVendorTest();
...
}
private void InitializeVendorTest()
{
caseV = new CaseVariables(TestContext);
...
}
}
class CaseVariables
{
public string lastNameID;
...
public CaseVariables(TestContext TestContext)
{
lastNameID = TestContext.DataRow["lastNameID"].ToString();
...
}
}
请您提供一些可以在这方面做些什么的输入?
答案 0 :(得分:0)
如果没有vstestconsole.exe或Visual Studio,您无法运行编码的ui测试。
您可以尝试使用参数运行vstestconsole.exe(测试dll的路径) 例如。 C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \ vstestconsole.exe
每次构建encodeui测试项目时都会创建Dll文件
答案 1 :(得分:0)
为什么需要从控制台应用程序运行测试? 我相信你可以使用vstestconsole.exe或mstest.exe
vstestconsole是替换MStest的命令行工具。但在这种情况下,我认为他们中的任何一个都可以做你想要的wat!
编码的UI测试或单元测试将需要初始化TestContext,测试引擎负责这样做,这就是你得到例外的原因。
在我的电脑中,mstest可执行文件位于" c:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \" 所以我可以启动命令提示符,导航到mstest.exe文件夹(abouve)并使用如下命令:
mstest.exe /testcontainer:"c:/TestFolder/testassembly.dll" /test:"TestNamespace.MyTestToExecute_TestMethod1"