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

VS2022中C#结合Selenium用NUnit属性后程序退出码为0且失效

问题原因与解决方案

你的代码无法执行NUnit测试的核心原因是当前项目是控制台应用程序,而非NUnit测试项目。控制台程序默认只会执行Main方法,不会自动识别并运行带有[SetUp]、[Test]、[TearDown]属性的方法,所以运行后直接以退出码0结束,实际没执行任何测试逻辑。

解决步骤:

  1. 转换为NUnit测试项目

    • 在Visual Studio中,右键解决方案→添加→新建项目,选择「NUnit测试项目」(确保已安装NUnit相关模板)
    • 将原有代码迁移到新的测试项目中,删除原控制台项目的空Main方法(测试项目不需要入口方法)
  2. 修正代码中的浏览器实例初始化问题
    原代码在类级别直接初始化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()更彻底
            }
        }
    }
    
  3. 运行测试

    • 打开Visual Studio的「测试资源管理器」(路径:测试→测试资源管理器)
    • 点击「全部运行」,NUnit测试运行器会自动执行带有标记的测试方法

额外说明:

  • 退出码0仅表示程序无崩溃退出,不代表测试逻辑被执行
  • 不要在控制台项目中手动调用NUnit测试逻辑,这种方式维护成本高,不符合测试项目规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:42:12