0

我有一个项目计划设置,其中包含一些自动化测试。整个环境似乎设置正确,即控制器已注册到团队项目集合,并且代理在实验室客户端设置的桌面上交互运行。

这是我面临的问题。我有 100 个自动化测试。如果我一次运行它们 1 个,它们就可以正常工作。

如果我运行 2 个或更多,它们会在第二次测试中失败,并出现以下异常。

控件不可用或无效。

同样,如果我独立运行任一测试,它们每次都会通过。

我猜这与运行之间的状态有关。

我的测试初始化​​如下所示:

[TestInitialize]
        public void Init()
        {
            Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.AllThreads;
            Playback.Wait(5000);
            AppManager.EnsureMyAppIsRunning();
            AppManager.SetTestEssentials(); 
        }
4

1 回答 1

0

我解决了这个问题。

我有一个名为 AppManager 的自定义静态类,它处理与 applicationUnderTest 的连接。

public static ApplicationUnderTest LaunchApplicationUnderTest(string applicationPath, bool closeOnPlaybackCleanup)
      {
         var processes = Process.GetProcessesByName("MyApplication");

         if (processes.Length > 0)
         {
            _application = ApplicationUnderTest.FromProcess(processes[0]);
         }
         else
         {
            _application = ApplicationUnderTest.Launch(applicationPath);
            _application.CloseOnPlaybackCleanup = closeOnPlaybackCleanup;
         }

         return _application;
      }

在这个类中,我还有一个静态 UIMap。这意味着 UIMap 在测试运行开始时被创建一次,并且不会在测试运行之间更新。

所以我在我的 ApplicationManager 中实现了一个新方法:

public static void ResetUIMap()
       {
           _map = new UIMap();
       }

然后我从测试初始化​​中调用它:

[TestInitialize]
        public void Init()
        {
            AppManager.EnsureApplicationUnderTestIsRunning();
            AppManager.SetTestEssentials();
            AppManager.ResetUIMap(); 
        }
于 2014-10-31T06:44:35.497 回答