我有一个项目计划设置,其中包含一些自动化测试。整个环境似乎设置正确,即控制器已注册到团队项目集合,并且代理程序在实验室中的客户端设置的桌面上以交互方式运行。
这是我面临的问题。我有100个自动测试。如果我一次运行它们就可以正常工作。
如果我运行了2个或更多,它们会在第2次测试时失败并出现以下异常。
该控件无效或无效。
如果我独立运行任何一个测试,它们都会每次都通过。
我猜这与运行之间的状态有关。
我的测试初始化如下所示:
[TestInitialize]
public void Init()
{
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.AllThreads;
Playback.Wait(5000);
AppManager.EnsureMyAppIsRunning();
AppManager.SetTestEssentials();
}
答案 0 :(得分: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();
}
然后我从test initialize中调用它:
[TestInitialize]
public void Init()
{
AppManager.EnsureApplicationUnderTestIsRunning();
AppManager.SetTestEssentials();
AppManager.ResetUIMap();
}