Selenium NUnit从Main()或exe运行

时间:2018-06-08 08:21:14

标签: selenium-webdriver nunit

我想从exe运行所有selenium测试。我尝试了这个帖子(Run NUnit test fixture programmatically

中提到的解决方案

这就是我写的

   public class Runner{

    public static int Main(string[] args)
    {
        return new AutoRun(Assembly.GetCallingAssembly())
                   .Execute(new String[]{"/test:Runner.Foo.Login" });}

       [TestFixture]
       public class Foo
    {
        IWebDriver driver;

        [Test]
        public void Initialize()
        {
            driver = new FirefoxDriver();// (@"C:\Selenium\Firefox");
            driver.Manage().Window.Maximize();
            driver.Manage().Timeouts().ImplicitWait = 
                  TimeSpan.FromSeconds(10);
            Console.WriteLine("Setup Browser");
        }
        [Test]
        public void Login()
        {
            eWb.Classes.LoginUser.eWbLogin(driver, ConfigurationSettings.AppSettings["UserId"],
                ConfigurationSettings.AppSettings["Password"], "CU");
           }}}}

控制台打开,无法读取测试方法登录。

1 个答案:

答案 0 :(得分:0)

您将Assembly.GetCallingAssemby()作为构造函数参数传递给AutoRun。由于这是在你的Main中,没有调用程序集,所以我假设传递的值为null。被告知要在null中找到测试,AutoRun几乎可以保证找不到任何测试。

正确的调用是根本不传递任何参数,因为测试实际上是在进行调用的程序集中。 AutoRun本身将弄清楚调用程序集是什么,应该找到你的测试。

您列出的SO答案不使用GetCallingAssembly。它使用GetExecutingAssembly。但是,由于没有任何论据同样有效,所以我会使用它。事实上,对于NUnit,您通常应该首先使用默认值,并且只在必要时调整参数。

建议阅读文档:https://github.com/nunit/docs/wiki