是否可以决定何时运行CleanUp方法?

时间:2015-05-28 17:26:03

标签: visual-studio unit-testing selenium

我正在使用Microsoft测试框架 - MST 。我想在测试运行后关闭浏览器。所以我添加了一个 CleanUp 方法。

[TestCleanup]
public void CleanUp()
{
    page.Exit();
}

这是定义 Exit()方法的方法。

public void Exit(int seconds = 3)
{
    if(driver != null)
        driver.Quit();
}

适用于一个单元测试。但是,当我立即运行所有测试时,我得到一个例外,因为框架继续使用相同的驱动程序。当驱动程序被销毁时,框架仍然依赖于刚被销毁的驱动程序。

是否可以决定何时销毁 webdriver 实例?我的意思是,当我只运行一次测试时,应该在一次测试结束时销毁驱动程序。并且,当我运行多个时,驱动程序应该在最后一次测试时被销毁。也许这意味着决定何时调用CleanUp方法。我不知道。

1 个答案:

答案 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();
}
相关问题