Visual Studio 2022 未运行 XUnit 测试

问题描述 投票:0回答:2

我创建了一个 EntityFramework ASP.NET 解决方案,我正在尝试创建一个 XUnit 测试项目来测试我创建的不同类。

我为我的活动类创建了一个测试类:

using LADS_Model;
using LADS_WebUI.Controllers;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.Generic;
using Xunit;
using Assert = Microsoft.VisualStudio.TestTools.UnitTesting.Assert;

namespace LADS_XUnit
{
    public class UnitTest_Activity
    {
        [TestClass]
        public class ActivityController
        {
            private List<Activity> GetTestActivities()
            {
                var testActivities = new List<Activity>();
                testActivities.Add(new Activity { Id = 1, Name = "Chaussure" });
                testActivities.Add(new Activity { Id = 2, Name = "Crevettes" });
                testActivities.Add(new Activity { Id = 3, Name = "Sandwich" });
                return testActivities;
            }

            [TestMethod]
            public void GetAllActivities_ShouldReturnAllActivities()
            {
                var testActivities = GetTestActivities();
                var controller = new ActivityController();

                var result = controller.GetTestActivities();
                Assert.Equals(testActivities.Count, result.Count);
            }
        }


    }
}

问题是,当我启动我的测试类时,我确实在测试资源管理器中显示了测试,但 VS 告诉我测试没有执行,我不知道为什么,因为它没有显示任何错误或任何消息来解释为什么它没有执行

测试输出:

c# asp.net entity-framework xunit
2个回答
3
投票
  • 你为 xUnit 使用了错误的方法属性,所以 xUnit Runner 不会发现你的测试:
  • 所以删除所有
    [TestClass]
    属性并将所有
    [TestMethod]
    属性更改为
    [Fact]
    .

我看到你有这个:

using Assert = Microsoft.VisualStudio.TestTools.UnitTesting.Assert;

...所以我假设您正在将现有的 MSTest 代码移植到 xUnit,在这种情况下,您可以将 MSTest 的属性别名为 xUnit,而不是更改代码库中的属性:

using TestClassAttribute  = SomeDummyAttribute;
using TestMethodAttribute = Xunit.FactAttribute;

internal sealed class SomeDummyAttribute : Attribute {}

如果您使用的是 C# 10.0 或更高版本您可以使用

global using
,它将被同一项目中的所有源文件共享.

此外,考虑使用 ShouldlyFluent Assertions 而不是

Assert
/
Asserts
类。


0
投票

我有一个不同的问题,症状几乎完全相同。 在我的例子中,我只是缺少了 nuget 包

xunit.runner.visualstudio
,我在一些 nuget 故障排除过程中删除了它。

在 Visual Studio 中通过 nuget GUI 安装后立即再次运行。

© www.soinside.com 2019 - 2024. All rights reserved.