0

首先我必须声明,我是 Selenium 测试框架的新手,在编程方面不是很有经验。我需要进行客户端 Web 测试,我认为 selenium 是要走的路,我正在尝试构建一个架构。目前我正在努力从异常中恢复。

所以我订阅了一个事件,如果我的 Main 方法发生任何错误:

class Program
{
    static void Main()
    {
        AppDomain.CurrentDomain.UnhandledException += ExceptionHandler.CurrentDomainOnUnhandledException;

        var test = new Login.LoginPageTests();
        test.DoLogin();
    }
}

因此,如果有任何东西被抛出,它会记录并返回到 baseURL。

class ExceptionHandler
{
    internal static void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs unhandledExceptionEventArgs)
    {
        var screenShot = TestHelpers.TakeScreenShot();
        var stack = new StackTrace();
        var callingMethod = stack.GetFrame(1).GetMethod().Name;
        var e = (Exception)unhandledExceptionEventArgs.ExceptionObject;

        Console.WriteLine("{0} : {1}\nscreenshot: {2}", callingMethod, e.Message, screenShot);
        var driver = TestHelpers.Driver;
        driver.Navigate().GoToUrl(TestHelpers.BaseUrl);
    }
}

但是现在,假设我在测试方法中并且抛出了异常,它仍然会使一切崩溃。这是为什么?怎样才能继续运行下一个测试?

编辑:TestHelpers.Driver 是:

internal class TestHelpers
{
    internal const string BaseUrl = @"http://someUrl:8103";

    private static IWebDriver _driver;
    public static IWebDriver Driver
    {
        get
        {
            if (_driver == null)
            {
                _driver = new FirefoxDriver();
                _driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
                _driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(30));
            }
            return _driver;
        }
    }
4

1 回答 1

1

据我所知,Nunit有类似Junit的东西TestWatcher,谷歌为此。

于 2014-03-06T17:04:20.850 回答