测试失败时,此代码应截取屏幕截图:
[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()中发生了什么。 感谢您的帮助。
答案 0 :(得分:0)
OneTimeTearDownAttribute
是NUnit的功能。
尽管您的标签说“ nunit”,但是您的代码实际上并未使用它。 TestClassAttribute
和TestMethodAttribute
是MS Test的功能。如果您尝试使用NUnit运行此测试,它将根本无法识别测试。
很明显,您的测试程序集确实引用了NUnit框架,因为它否则无法编译。
所以...最重要的是,您的测试代码引用了两个不同的框架,使得任何一个运行者都无法成功运行它!您必须选择要使用的两者中的哪一个,删除另一个引用,并为选择保留的框架使用运行器。