Rider NUnit 测试问题:程序不包含 main

Posted

技术标签:

【中文标题】Rider NUnit 测试问题:程序不包含 main【英文标题】:Rider NUnit Test problem: Program does not contain main 【发布时间】:2019-09-30 13:37:09 【问题描述】:

我无法在 Rider (JetBrains) 上开始我的 NUnit 测试。我有一个名为 ISDI 的控制台应用程序项目,我正在尝试在同一解决方案中使用一个名为 ISDITest 的 NUnit 测试项目对其进行测试。

这是我的代码:

using System;
using ISDI; 
using NUnit.Framework;

namespace ISDITest 
    [TestFixture]
    public class TestNome
    
        [Test]
        public void TestRoom()
        
            IRoom r = new Room(0);
            IEntity p = new Player();
            r.InsertEntity(p);
            Assert.Equals(r.GetEntities().Count, 1);
            Assert.True(r.GetEntities().Contains(p));
        
    
 

当我尝试运行测试时出现构建错误:

程序不包含适合入口点的静态“Main”方法

我认为测试类中的测试方法不需要 Main 并且我不知道如何解决这个问题,因为我在创建它时已经指定这是一个测试项目。 如果这是一个愚蠢的问题,我很抱歉,但我才刚刚开始使用 C# 和测试。

【问题讨论】:

尝试像这样[Test, STAThread]STAThread 添加到您的测试中。 【参考方案1】:

运行程序时,您需要一个入口点——代码开始的地方。通常,Main 用于此目的,但当您有NUnit 时,您可以使用[Test] 作为入口点。

当您想要运行测试时,您需要使用[Test] 标志作为程序的入口点。为此,您不需要 Main 方法。

我建议阅读 Rider / 单元测试文档,了解有关如何在不实现 Main 方法的情况下运行 [Test] 代码的更多信息。

https://www.jetbrains.com/help/rider/Unit_Testing__Index.html

【讨论】:

【参考方案2】:

解决了在我要测试的项目中放置一个空 Main 的问题。不过,这对我来说没有任何意义。

【讨论】:

我添加了一个不使用空 Main 方法的解决方案,并解释了它是如何工作的。

以上是关于Rider NUnit 测试问题:程序不包含 main的主要内容,如果未能解决你的问题,请参考以下文章

Rider 不断从解决方案中删除测试项目

在 STA 下运行 NUnit 测试的问题

你如何用 NUnit 测试私有方法?

UWP 单元测试不会出现在 Rider 中

C# nUnit 测试失败,说 SQL Server CE 约束实际上不存在

Unity + Rider - 运行测试错误:“未找到此测试的程序集”