在C#NUnit中运行测试后没有发生任何事情

在C#NUnit中运行测试后没有发生任何事情,c#,selenium,webdriver,nuget,nunit,C#,Selenium,Webdriver,Nuget,Nunit,首先,我想告诉你,我是C#自动化测试的新手 我创建了NUnit测试项目(.NET Core),在C#NUnit中运行测试时遇到问题。当我在测试资源管理器中单击“运行所选测试”时,什么也没有发生。我的测试资源管理器中没有任何错误。在输出中,我遇到错误System.ArgumentException:路径中存在非法字符 此外,当我尝试从命令行(“C:\Tools\NUnit\bin\net35\nunit3 console.exe”C:\Users\MY\u USER\source\repos\nu

首先,我想告诉你,我是C#自动化测试的新手

我创建了NUnit测试项目(.NET Core),在C#NUnit中运行测试时遇到问题。当我在测试资源管理器中单击“运行所选测试”时,什么也没有发生。我的测试资源管理器中没有任何错误。在输出中,我遇到错误System.ArgumentException:路径中存在非法字符

此外,当我尝试从命令行(“C:\Tools\NUnit\bin\net35\nunit3 console.exe”C:\Users\MY\u USER\source\repos\nunitestproject2\nunitestproject2.sln)运行测试时,我发现 无法加载文件或程序集nunit.framework错误

运行测试的唯一方法是命令行和 dotnet测试C:\Users\MY_USER\source\repos\nunitestproject2\nunitestproject2\nunitestproject2.csproj

我的NuGet依赖项:

  • Microsoft.NET.Test.Sdk(15.5.0)
  • 努尼特(3.9.0)
  • NUnit3TestAdapter(3.9.0)
  • Selenium.WebDriver(3.141.0)
我的测试资源管理器始终如下所示:

 public class Tests
    {
        // comment out setup method so this Selenium code does not get run.
       // IWebDriver driver;
     //   [SetUp] 
    //    public void Setup()
    //    {
    //        driver = new //ChromeDriver("C:/Users/MY_USER/source/repos/NUnitTestProject1/NUnitTestProject1/bin/Debug/netcoreapp2.1/");
  //      }

        [Test]
        public void Test1()
        {
            Assert.Pass("Passed first test successfully.");
        }
    }

我试图更改NuGet依赖项的版本

公共类测试
{
IWebDriver;
[设置]
公共作废设置()
{
driver=new ChromeDriver(“C:/Users/MY_USER/source/repos/nunitestproject1/nunitestproject1/bin/Debug/netcoreapp2.1/”;
}
[测试]
公共void Test1()
{
driver.Navigate().gotour(“https://google.com/");
}
}

我将实现一个
StartChromeDriver()
方法来正确处理启动ChromeDriver。下面是一个例子:

public IWebDriver StartChromeDriver()
{
            var options = new ChromeOptions();
            options.AddArgument("--disable-extensions");
            options.AddArguments("disable-infobars");
            options.AddArgument("--no-sandbox")       
            driver = new ChromeDriver(options);
            return driver;
}
然后用
driver=StartChromeDriver()
替换
[SetUp]
方法中的
driver=new ChromeDriver
调用。 问题可能是在初始化ChromeDriver实例时没有提供任何ChromeOptions()

另外,根据另一位用户的建议,我将编写一个简单的测试,将问题从Selenium和NUnit中分离出来。您可以这样做:

 public class Tests
    {
        // comment out setup method so this Selenium code does not get run.
       // IWebDriver driver;
     //   [SetUp] 
    //    public void Setup()
    //    {
    //        driver = new //ChromeDriver("C:/Users/MY_USER/source/repos/NUnitTestProject1/NUnitTestProject1/bin/Debug/netcoreapp2.1/");
  //      }

        [Test]
        public void Test1()
        {
            Assert.Pass("Passed first test successfully.");
        }
    }

如果您的测试在没有Selenium/ChromeDriver代码的情况下成功运行,那么您知道问题出在Selenium而不是NUnit上。

我将实现一个
StartChromeDriver()
方法来正确处理启动ChromeDriver的问题。下面是一个例子:

public IWebDriver StartChromeDriver()
{
            var options = new ChromeOptions();
            options.AddArgument("--disable-extensions");
            options.AddArguments("disable-infobars");
            options.AddArgument("--no-sandbox")       
            driver = new ChromeDriver(options);
            return driver;
}
然后用
driver=StartChromeDriver()
替换
[SetUp]
方法中的
driver=new ChromeDriver
调用。 问题可能是在初始化ChromeDriver实例时没有提供任何ChromeOptions()

另外,根据另一位用户的建议,我将编写一个简单的测试,将问题从Selenium和NUnit中分离出来。您可以这样做:

 public class Tests
    {
        // comment out setup method so this Selenium code does not get run.
       // IWebDriver driver;
     //   [SetUp] 
    //    public void Setup()
    //    {
    //        driver = new //ChromeDriver("C:/Users/MY_USER/source/repos/NUnitTestProject1/NUnitTestProject1/bin/Debug/netcoreapp2.1/");
  //      }

        [Test]
        public void Test1()
        {
            Assert.Pass("Passed first test successfully.");
        }
    }

如果您的测试在没有Selenium/ChromeDriver代码的情况下成功运行,那么您就知道问题出在Selenium而不是NUnit上。

这是说您的路径中有非法字符,可能需要
新的ChromeDriver(@“…
并使用反斜杠而不是正斜杠。您的ChromeDriver路径指的是NuniteSproject1,您的命令行指的是NuniteSproject2。您是否删除了NuniteSproject1并重新开始或类似的操作?我也会将斜杠替换为反斜杠。没有任何更改。
driver=new ChromeDriver(@“C:\Users\MY\u USER\source\repos\nunitestproject1\nunitestproject1\bin\Debug\netcoreapp2.1\”);
。我尝试了\并\\编辑:我把chromedrive.exe放在哪里并不重要。我一直都有相同的错误。另一个选择可能是将NUnit升级到最新版本。路径中的非法字符问题似乎会影响您正在使用的版本,并且在3.11中得到了修复。另外,可能值得将此问题完全分开om selenium。您可以运行对selenium没有依赖性的测试吗?我将NUnit更新到3.12.0版本,但问题仍然存在。没有selenium依赖性,我无法运行测试。此外,当我从new ChromeDriver()中删除路径时,问题是相同的,这表示您的路径中有非法字符,可能只需要
new ChromeDriver(@)..
并使用反斜杠而不是正斜杠。您的ChromeDriver路径指的是NuniteSproject1,您的命令行指的是NuniteSproject2。您是否删除了NuniteSproject1并重新开始或类似的操作?我也会将斜杠替换为反斜杠。没有任何更改。
driver=new ChromeDriver(@“C:\Users\MY\u USER\source\repos\nunitestproject1\nunitestproject1\bin\Debug\netcoreapp2.1\”);
。我尝试了\并\\编辑:我把chromedrive.exe放在哪里并不重要。我一直都有相同的错误。另一个选择可能是将NUnit升级到最新版本。路径中的非法字符问题似乎会影响您正在使用的版本,并且在3.11中得到了修复。另外,可能值得将此问题完全分开om selenium。您可以运行对selenium没有依赖关系的测试吗?我将NUnit更新到3.12.0版本,但问题仍然存在。没有selenium依赖关系,我无法运行测试。此外,当我从新的ChromeDriver()中删除路径时,问题也是一样的