VS2012编码用户界面 - CloseOnPlaybackCleanup不能与ApplicationUnderTest一起使用

时间:2014-11-01 12:35:35

标签: visual-studio-2012 coded-ui-tests

在VS2012中执行测试,在执行期间,脚本调用程序(记事本)。我需要这个程序在测试结束时不关闭。有人帮我解决这个问题吗? 示例代码:

  [TestMethod]
  public void TestVoid()
  {
  }

  [TestInitialize]
  public void MyTestInitialize()
  {
        Process[] processes = Process.GetProcessesByName("Notepad");
        if (processes.Length > 0)
        {
              _app = ApplicationUnderTest.FromProcess(processes[0]);
        }
        else
        {
              _app = ApplicationUnderTest.Launch(@"C:\Windows\System32\notepad.exe");
              _app.CloseOnPlaybackCleanup = false;
        }
  }

  [TestCleanup]
  public void MyTestCleanup()
  {
  }

3 个答案:

答案 0 :(得分:0)

我喜欢我的ApplicationUnderTest是从头到尾使用的类或全局变量。所以,我在这里创建变量:

public static class GlobalVariables
{
    public static ApplicationUnderTest App;
}

然后我在我的TestInitialize()中初始化它:

[CodedUITest]
public class WinFormTests
{
    [TestInitialize()]
    public void MyTestInitialize()
    {
         GlobalVariable.App = ApplicationUnderTest.Launch(@"C:\RyansConjobulator.exe");
    }

    [TestMethod]
    public void TextBoxValueToResultField()
    {
        Keyboard.SendKeys(TextBoxInput, "blah blah blah");
        Mouse.Click(textButton.TextBoxButtonInput);
        Assert.IsTrue(resultEdit.ResultEdit.DisplayText.Contains("blah blah blah"));
    }

}

现在,我可以在整个测试过程中访问它并在最后清理它:

 [TestCleanup()]
 public void MyTestCleanup()
 {
     app.Close();
 }

答案 1 :(得分:0)

执行此操作的方法是确保应用程序在实际开始测试运行之前运行。

这可以通过多种方式完成,但如果您在实验室环境中开展工作,请使用以下方法:

enter image description here

然后,您可以通过以下流程设置启动时的应用程序:

public static ApplicationUnderTest LaunchApplicationUnderTest(string applicationPath,
            bool closeOnPlaybackCleanup)
        {
            Process[] processes = Process.GetProcessesByName("Notepad");

            if (processes.Length > 0)
            {
               /// You can also launch app here using standard .net launching techniques
                _application = ApplicationUnderTest.FromProcess(processes[0]);
            }
            else
            {
                _application = ApplicationUnderTest.Launch(applicationPath);
                _application.CloseOnPlaybackCleanup = closeOnPlaybackCleanup;
            }

            return _application;
        }

就个人而言,我只会排除脚本并启动我评论过的应用程序 - 稍微改变一下这个函数然后总是得到应用程序FromProcess。

逻辑是,如果应用程序已经打开,如果将CloseOnPlaybackCleanup设置为false,它将保持打开状态。

还要将应用程序作为全局静态测试。

答案 2 :(得分:0)

  • BrowserWindow ApplicationUnderTest 类有一个名为 CloseOnPlaybackCleanup 的属性。
    CloseOnPlaybackCleanup = false 时,浏览器/应用程序保持打开状态 - 使用 BrowserWindow.Launch 启动时。要么 ApplicationUnderTest.Launch (“字符串路径/路径到.exe”)。

    示例:
    AUT = ApplicationUnderTest.Launch(@“C:\ Program Files(x86)\ SIMS \ FMSSQL \ Finance.exe”);                 AUT.CloseOnPlaybackCleanup = false;