VS2022中C#结合Selenium用NUnit属性后程序退出码为0且失效
问题原因与解决方案
你的代码无法执行NUnit测试的核心原因是当前项目是控制台应用程序,而非NUnit测试项目。控制台程序默认只会执行Main方法,不会自动识别并运行带有[SetUp]、[Test]、[TearDown]属性的方法,所以运行后直接以退出码0结束,实际没执行任何测试逻辑。
解决步骤:
转换为NUnit测试项目
- 在Visual Studio中,右键解决方案→添加→新建项目,选择「NUnit测试项目」(确保已安装NUnit相关模板)
- 将原有代码迁移到新的测试项目中,删除原控制台项目的空
Main方法(测试项目不需要入口方法)
修正代码中的浏览器实例初始化问题
原代码在类级别直接初始化IWebDriver会导致浏览器提前启动,不符合NUnit的测试生命周期规范,应移到[SetUp]方法中,同时给测试类添加[TestFixture]标记:using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; namespace ExecuteAutomation { [TestFixture] class GoogleSearchTests { private IWebDriver driver; [SetUp] public void Initialize() { driver = new ChromeDriver(); driver.Navigate().GoToUrl("http://www.google.com"); } [Test] public void ExecuteTest() { IWebElement element = driver.FindElement(By.Name("q")); element.SendKeys("ExecuteAutomation"); } [TearDown] public void Cleanup() { driver.Quit(); // 用Quit()关闭整个浏览器进程,比Close()更彻底 } } }运行测试
- 打开Visual Studio的「测试资源管理器」(路径:测试→测试资源管理器)
- 点击「全部运行」,NUnit测试运行器会自动执行带有标记的测试方法
额外说明:
- 退出码0仅表示程序无崩溃退出,不代表测试逻辑被执行
- 不要在控制台项目中手动调用NUnit测试逻辑,这种方式维护成本高,不符合测试项目规范
内容的提问来源于stack exchange,提问作者Abdurrahman Ahmed
相关产品推荐
相关产品推荐

