我創建了一個 EntityFramework ASP.NET 解決方案,并且正在嘗試創建一個 XUnit 測驗專案來測驗我創建的不同類。
我為我的 Activity Class 創建了一個 TestClass :
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);
}
}
}
}
問題是,當我啟動我的 testClass 時,我確實在測驗資源管理器中顯示了測驗,但 VS 告訴我測驗沒有執行,我不知道為什么,因為它沒有顯示任何錯誤或任何訊息來解釋它的原因沒有執行

測驗輸出:

uj5u.com熱心網友回復:
- 您為 xUnit 使用了錯誤的方法屬性,因此 xUnit Runner 不會發現您的測驗:
- 您正在使用
[TestClass]and[TestMethod],但 xUnit 使用[Fact](and[Theory], and others) only on methods, and doesn't use any attributes on testclass` 型別。 - xUnit 的網站有一個表格,用于匹配和比較 NUnit、xUnit 和 MSTest 的屬性。
- 您正在使用
- 所以洗掉所有
[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它將由同一專案中的所有源檔案共享。
此外,請考慮使用應該或流利的斷言而不是Assert/Asserts類。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/448776.html
上一篇:在C#中按類別反序列化JSON
