我有类似的问题,我坚持不懈。要求为此提供一些解决方案。我有一个Win Form Application,可以接受用户输入,当用户点击OK时,它会调用Coded UI Test。 Winform位于项目A中,编码UI测试位于项目B中。项目B在项目A中作为参考添加。问题是当Winform应用程序调用Coded UI测试方法时,不会初始化播放。由于它没有初始化,因此编码的ui测试方法都不起作用。我尝试在各种论坛上搜索此内容,但无法为其找到合适的解决方案。我正在研究VS2012。还添加了对编码UI dll的引用。
The references to Project A are mentioned below and CopyLocal is set to True: c:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE\PublicAssemblies\ Microsoft.VisualStudio.TestTools.UITesting.dll Microsoft.VisualStudio.QualityTools.CodedUITestFramework.dll
C:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\
Microsoft.VisualStudio.TestTools.UITest.CodeGeneration.dll
Microsoft.VisualStudio.TestTools.UITest.Framework.dll
Microsoft.VisualStudio.TestTools.UITest.Playback.dll
对项目B的引用是相同的,但都来自C:\ Program Files \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ Reference Assemblies \和CopyLocal设置为False
如果我为项目A将CopyLocal设置为False,则测试无法启动,因为它无法在项目文件夹中找到这些dll。
下面提到了处理我的目标的代码:
namespace WinFormtest
{
public class WinFormTestClass
{
// Call the Coded UI Test in the order --> namespace.class.CodedUITestMethod
test.codeduiclass.codeduitestmethod();
}
}
创建新项目时创建的Program.cs具有以下内容。尝试在这里初始化编码的UI测试,但它不起作用:使用System;使用System.Collections.Generic;使用System.Linq;使用System.Threading.Tasks;使用System.Windows.Forms;使用Microsoft.VisualStudio.TestTools.UITesting;
namespace DMServerInstaller
{
static class Program
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (!Playback.IsInitialized)
{
Playback.Initialize();
}
Application.Run(new Form());
}
}
}
// Below is the snippet of the coded UI test class
public class ServerTests
{
[TestInitialize]
public void TestInitialize()
{
if (Playback.IsInitialized)
{
Playback.Cleanup();
}
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(5));
if (!Playback.IsInitialized)
{
Playback.Initialize();
}
}
[TestCleanup]
public void TestCleanup()
{
PreviousTestOutcome = TestContext.CurrentTestOutcome;
Log.Debug("Entering TestTeardown");
// If an assertion say cheese. Validate if this is required as CUI automatically takes screenshot on failures too.
if (TestContext.CurrentTestOutcome != UnitTestOutcome.Passed)
{
Camera.TakePicture(TestContext);
Playback.Wait(1000);
}
Log.Debug("Exiting TestTeardown");
}
[TestMethod]
public static void codeduitestmethod();
{
// Some statements here
}
}
请求您尽早帮助我。