我正在使用Microsoft测试框架 - MST 。我想在测试运行后关闭浏览器。所以我添加了一个 CleanUp 方法。
[TestCleanup]
public void CleanUp()
{
page.Exit();
}
这是定义 Exit()方法的方法。
public void Exit(int seconds = 3)
{
if(driver != null)
driver.Quit();
}
适用于一个单元测试。但是,当我立即运行所有测试时,我得到一个例外,因为框架继续使用相同的驱动程序。当驱动程序被销毁时,框架仍然依赖于刚被销毁的驱动程序。
是否可以决定何时销毁 webdriver 实例?我的意思是,当我只运行一次测试时,应该在一次测试结束时销毁驱动程序。并且,当我运行多个时,驱动程序应该在最后一次测试时被销毁。也许这意味着决定何时调用CleanUp方法。我不知道。
答案 0 :(得分:1)
听起来你可能正在寻找ClassCleanup
。
如果不是使用TestCleanup
,而是使用ClassCleanup()
,则在运行该类中的所有测试之后执行清理,而不是在每次单独测试之后执行(无论您是否只运行1次测试或者所有这些)。
您可能还需要查看ClassInitialize
,具体取决于您创建页面/驱动程序变量的方式,以确保它们在ClassCleanup
方法中可用。类似的东西:
static PageType _page;
[ClassInitialize]
public static void ClassInit(TestContext context) {
_page = // create it
}
[TestInitialize]
public void TestInit() {
// prepare _page for test run
}
[ClassCleanup()]
public static void ClassCleanup() {
_page.Exit();
}