You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NUnit命令行运行测试时,如何指定项目根目录作为文件搜索路径?

问题:NUnit控制台运行测试时无法找到appsettings.json和Selenium Manager

问题详情

  • 执行的测试运行命令:
    C:\Users\user\NUnit.Console-3.17.0\bin\net6.0\nunit3-console.exe C:\Users\user\source\repos\mmfo_autotest\RegressionTestSuite\bin\Release\net6.0\Regression_Test_Suite.dll
    
  • 配置文件找不到的错误:

    System.IO.FileNotFoundException : Could not find file 'C:\Users\user.nuget\packages\nunit.consolerunner\3.17.0\tools\agents\net6.0\appsettings.json'.

  • appsettings.json实际位置:C:\Users\user\source\repos\mmfo_autotest\RegressionTestSuite\bin\Release\net6.0\appsettings.json
  • 读取配置的代码片段:
    string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "appsettings.json");
    string text = File.ReadAllText(path);
    _configuration ??= JsonConvert.DeserializeObject<ConfigurationData>(text);
    return _configuration;
    
  • Selenium Manager同样出现路径错误:

    ----> OpenQA.Selenium.WebDriverException : Unable to locate or obtain Selenium Manager binary at C:\Users\user.nuget\packages\nunit.consolerunner\3.17.0\tools\agents\net6.0\selenium-manager\windows\selenium-manager.exe

版本信息:NUnit 4.1.0,NUnit.ConsoleRunner 3.17.0

解决方法

方法1:切换工作目录后运行测试

执行nunit3-console.exe前,先切换到测试项目的输出目录,让程序在正确的基准路径下查找文件:

cd C:\Users\user\source\repos\mmfo_autotest\RegressionTestSuite\bin\Release\net6.0
C:\Users\user\NUnit.Console-3.17.0\bin\net6.0\nunit3-console.exe Regression_Test_Suite.dll

此方法会让AppDomain.CurrentDomain.BaseDirectory指向测试输出目录,同时Selenium Manager也会在当前目录下检索所需文件。

方法2:修改代码以程序集目录为基准定位文件

如果不想调整工作目录,可修改读取配置的代码,通过测试程序集的位置来确定配置文件路径,不受工作目录影响:

// 获取当前测试程序集所在目录
var assemblyDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string path = Path.Combine(assemblyDir, "appsettings.json");
string text = File.ReadAllText(path);
_configuration ??= JsonConvert.DeserializeObject<ConfigurationData>(text);
return _configuration;

方法3:指定Selenium Manager路径

通过环境变量直接指定Selenium Manager的位置,可在命令行中设置:

set SE_MANAGER_PATH=C:\Users\user\source\repos\mmfo_autotest\RegressionTestSuite\bin\Release\net6.0\selenium-manager\windows
C:\Users\user\NUnit.Console-3.17.0\bin\net6.0\nunit3-console.exe C:\Users\user\source\repos\mmfo_autotest\RegressionTestSuite\bin\Release\net6.0\Regression_Test_Suite.dll

也可以在代码初始化WebDriver前设置:

Environment.SetEnvironmentVariable("SE_MANAGER_PATH", @"C:\Users\user\source\repos\mmfo_autotest\RegressionTestSuite\bin\Release\net6.0\selenium-manager\windows");

内容的提问来源于stack exchange,提问作者Norlerion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:53:14