从控制台应用程序运行数据驱动的编码ui

时间:2016-09-14 11:27:16

标签: c# csv coded-ui-tests

我需要运行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();
         ...
    }
}

请您提供一些可以在这方面做些什么的输入?

2 个答案:

答案 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"