OneTimeTearDown无法使用Selenium WebDriver

时间:2018-12-30 22:03:06

标签: c# nunit

测试失败时,此代码应截取屏幕截图:

 [TestClass]
public class UnitTest1
{
    [OneTimeTearDown]
    public void TestFail()
    {
        IWebDriver driver = new ChromeDriver();
        if (NUnit.Framework.TestContext.CurrentContext.Result.Outcome != ResultState.Success)
        {
            string screensLocation = @"D:\";
            string testName = NUnit.Framework.TestContext.CurrentContext.Test.Name;
            var screenshot = ((ITakesScreenshot)driver).GetScreenshot();
            screenshot.SaveAsFile(screensLocation + testName + ".png");
        }
    }
    [TestMethod]
    public void TestMethod1()
    {
        // my code, here test is failed
    }
}

但是它不起作用。我在位置D没有任何屏幕:\ 否则,有没有一种方法可以在OneTimeTearDown属性下调试代码?因为当测试失败时,调试结束,并且我不知道方法TestFail()中发生了什么。 感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

OneTimeTearDownAttribute是NUnit的功能。

尽管您的标签说“ nunit”,但是您的代码实际上并未使用它。 TestClassAttributeTestMethodAttribute是MS Test的功能。如果您尝试使用NUnit运行此测试,它将根本无法识别测试。

很明显,您的测试程序集确实引用了NUnit框架,因为它否则无法编译。

所以...最重要的是,您的测试代码引用了两个不同的框架,使得任何一个运行者都无法成功运行它!您必须选择要使用的两者中的哪一个,删除另一个引用,并为选择保留的框架使用运行器。