我想从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");
}}}}
控制台打开,无法读取测试方法登录。
答案 0 :(得分:0)
您将Assembly.GetCallingAssemby()
作为构造函数参数传递给AutoRun
。由于这是在你的Main中,没有调用程序集,所以我假设传递的值为null。被告知要在null
中找到测试,AutoRun几乎可以保证找不到任何测试。
正确的调用是根本不传递任何参数,因为测试实际上是在进行调用的程序集中。 AutoRun本身将弄清楚调用程序集是什么,应该找到你的测试。
您列出的SO答案不使用GetCallingAssembly
。它使用GetExecutingAssembly
。但是,由于没有任何论据同样有效,所以我会使用它。事实上,对于NUnit,您通常应该首先使用默认值,并且只在必要时调整参数。