CodedUI测试 - 为整个测试集启动一次浏览器

14
我正在使用VS2010编写一些CodedUI测试,以测试一个Web应用程序。我想要能够为整个解决方案打开浏览器一次,然后在测试完成时再关闭它。
我尝试了在一个方法上使用AssemblyInitialize属性,并在其中使用BrowserWindow.Launch,但是当我运行它时,它会给我以下异常:
“程序集初始化方法OrdersGridTesting.SuiteSetup.Login引发异常。 Microsoft.VisualStudio.TestTools.UITest.Extension.TechnologyNotSupportedException: 当前不支持浏览器。中止测试执行。”
当我将相同的代码放入TestMethod中时,这段代码可以正常工作,这使我相信这是不可能的。如果可以的话,有人能提供另一种方法吗?如果可能的话,我想要一个不涉及将相同的代码添加到项目中每个测试类的方法。谢谢!

甚至在ClassInitialization中也无法做到这一点,这将是一个不太糟糕的替代方案。 - rythos42
它会抛出一个错误,因为播放尚未初始化。TestInitialize 隐式调用 playback.initialize()。 - stoj
2个回答

13
如果使用ClassInitialize,则需要使用Playback.Initialize()来初始化播放引擎。
  [ClassInitialize]
  public static void LaunchBroswer(TestContext context)
  {         
     Playback.Initialize(); 
     BrowserWindow browser = BrowserWindow.Launch(new System.Uri("about:blank"));
  }

1
我在提出问题后继续使用TestInitialize...并意识到我根本不想在整个测试运行之前加载浏览器。如果这样做,每次测试运行之前都不会重置测试条件!但我很高兴将来知道这一点。 - rythos42
1
我在我的AssemblyInitialize方法中添加了Playback.Initialize()函数,但没有任何改变 - 我仍然收到错误。我正在使用有序测试列表来运行所有测试。 - Ciaran Gallagher
1
我甚至尝试了这个,但是无法解决它。在测试步骤之后,它仍然会关闭浏览器。 - hirosht

0
 BrowserWindow uatwebjetcomauBrowser = BrowserWindow.Launch(new System.Uri(this.LaunchBrowserParams.Url));

1
我恐怕这是一个过于简单化的答案。我不会运行它,但是在你在“AssemblyInitialize”中运行它时,“Playback.Initialize()”是必需的,以便“Launch”不会抛出异常。 - rythos42

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接