xUnit是遵循特定体系结构的符合单元测试的框架的集合名称。实现因语言而异,但框架应包括测试运行器,测试用例,测试夹具(上下文),测试套件,测试执行,测试结果格式化程序和断言
我需要使用 NSubstitute 对我的hangifre 经常性工作进行单元测试,我的服务类如下,现在我需要对其进行测试。 公共类 ItemService :IItemService、IJobConfigurationService {
为什么 Assert.Equal 两个不同的 JObject(Newtonsoft.Json.Linq.JObject) 能够通过
我对 c#、xUnit 以及 Newtonsoft.Json 都很陌生。当我尝试在单元测试中使用 Assert.Equal() 方法比较两个不同的 JOject 时,它通过了,请参阅下面的示例代码 使用 Newto...
xUnit 自定义 UseCulture 属性 - 示例属性是否包含任何问题?
我有一个 ASP.NET Core 6 Web API 应用程序。 我正在使用 xUnit 编写单元测试。 我需要改变一些测试的文化。 根据这里的答案,建议进行自定义 att...
我有以下单元测试,正在从 .Net Framework 库移植到 .Net core xunint 测试库。需要添加单元测试的项目是 https://github.com/dotliquid/dotli...
在xunit中获取ITestOutputHelper而不注入它
我正在使用x-unit。我们使用测试输出。我们在基类中有一些东西。目前我们像这样注入ITestOutputHelper: 公共类 AnyTestClass : TestBase { [事实] 公共无效一些测试() ...
向某些代码添加功能标志时,我想要一种在应用和不应用标志的情况下执行现有代码的方法,以确保打开/关闭它不会破坏现有代码。 让我们说...
PnP.Core - IFolderCollection 模拟失败
我需要模拟一个共享点文档库,返回 6 个文件的列表。这是我用来创建模拟系统的逻辑。 公共类 SharePointDocLibraryUtilsTestFactory { 私人模拟...
我在 Visual Studio 中创建了一个新的 xUnit 测试项目,并添加了几个简单的测试。但是当我尝试运行其中任何一个时,它们都不会运行,因为根据测试输出,发现已中止......
读取 ASP.NET Core 测试项目中的 appsetting-test.json 文件
我有一个使用 ASP.NET Core 的测试项目并尝试读取应用程序设置值。 使用以下配置在测试项目中创建了 appsetting.test.json 文件 { “baseUrl”:“...
我需要测试一个使用 CSVHelper 的函数 { 私有只读 CsvConfiguration _csvConfig; 公共 CsvWriterService(CsvConfiguration csvConfig) { _csvConfig = csvConfig...
Blazor 的模拟 ProtectedSessionStorage
有没有办法在 Blazor 服务器端项目中模拟 ProtectedSessionStorage? 我尝试了下面的代码,但收到错误:“要模拟的类型(ProtectedSessionStorage)必须是一个接口、一个删除...
xUnit - 将 WebApplicationFactory 与 CollectionFixture 结合使用进行 .Net Core 集成测试
我已经使用 xUnit、共享类夹具和依赖项注入为我的 .Net Core API 实现了集成测试,因此我可以使用 WebApplicationFactory。 公共类DatabaseFixture:
当我模拟 IHttpClientFactory 并创建 HttpClient 时,HttpClient 为 null
我想对一个工厂进行单元测试,在其中注入 IHttpClientFactory,并且该工厂创建一个使用 HttpClient 的类。 这是代码: 公共类 ClientFactory :IClientFactory {
无法模拟CloudStorageAccount.CreateCloudBlobClient()
我有一个返回 BlobResultSegment 的方法。我必须为该方法编写单元测试用例。任何人都可以建议任何方式来模拟 CloudStorageAccount.CreateCloudBlobClient() 私有异步...
从封面的覆盖率报告中排除 AspNetCoreGenerateDocument 类
我在 Views 文件夹中每个视图的代码覆盖率结果中出现了此类 AspNetCoreGenerateDocument.Views_Users__AddOrUpdateUser , 示例: AspNetCore生成文档。
我目前正在将一个大型应用程序从 .net 4.8 框架更新到 .net 8。我遇到了很多错误,但到目前为止我已经能够通过一些研究解决大多数错误。这个问题一直困扰着我...
我目前正在将我的 MsTest 单元测试转换为 xUnit。使用xUnit,有没有办法测试异常消息?测试异常消息而不是仅测试异常类型是否正确?
有这样一个从数据库获取一些数据的方法: 公共异步任务 GetByFilter(Func, IQueryable>? queryModifier, CancellationToken
如何将 Boost.Test 输出记录到 HRF 中的标准输出和 XML 中的文件?
我想启用将 Boost.Test 输出记录到 stdout/sterr 和日志文件中。 但是,我也希望标准输出日志记录采用 HumanReadableFormat 格式,并且仅输出文件...
我正在尝试为一个类(在 .net Core 项目中)编写一个 xunit 测试,如下所示: 公共类FoodStore:IFoodStore { FoodList 食品项目; 公共食品商店(IOptions 我正在尝试为一个类(在 .net Core 项目中)编写一个 xunit 测试,如下所示: public Class FoodStore:IFoodStore { FoodList foodItems; public FoodStore(IOptions<FoodList> foodItems) { this.foodItems = foodItems; } public bool IsFoodItemPresentInList(string foodItemId) { //Logic to search from Food List } }` 注意:FoodList实际上是一个json文件,包含数据,在Startup类中加载和配置。 如何编写具有适当依赖注入的 xunit 测试来测试 IsFoodItemPresentInList 方法? 您可以使用 IOptions<FoodList> 方法创建 Options.Create 的实例: var foodListOptions = Options.Create(new FoodList()); 您可以使用 OptionsWrapper<T> 类来伪造您的配置。然后您可以将此对象传递给您要测试的类。这样你就不必使用 DI 或读取真实配置。 类似这样的: var myConfiguration = new OptionsWrapper<MyConfiguration>(new MyConfiguration { SomeConfig = "SomeValue" }); var yourClass = new YourClass(myConfiguration); 我遇到了类似的问题(使用xUnit),经过一番努力,我解决了。 答案这么晚了,但应该对其他人有帮助。 对于你的问题: public Class FoodStoreTest { private readonly IConfigurationRoot _configuration; private readonly IServiceProvider _serviceProvider; public FoodStoreTest(){ // read Json var configBuilder = new ConfigurationBuilder() .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables(); _configuration = configBuilder.Build(); // SetUp DI var services = new ServiceCollection(); services.AddOptions(); // this statement is required if you wanna use IOption Pattern. services.Configure<YuntongxunOptions>(_configuration.GetSection("yuntongxun")); _serviceProvider = services.BuildServiceProvider(); } [Fact] public void GetFootItemOption() { IOption<FoodList> optionAccessor = _serviceProvider.GetService<IOptions<FoodList>>(); FoodList footListOptions = optionAccessor.value; Assert.NotNull(footListOptions) // ... } } 此外,您应该将“appSettings.json”复制到项目根文件夹。 在单元测试中,您通常不使用依赖注入,因为是您控制测试对象的创建。 要提供实现 IOptions<FoodList> 的合适对象,您可以自己实现具有所需行为的伪类,或者使用一些模拟框架动态配置实例,例如 Moq。 正如其他答案所建议的,在您的测试类中,您可以创建一个仅用于测试的选项实例。 你可以这样做; public class FakeFoodList : IOptions<FoodList> { public FoodList Value { get { return new FoodList(); // TODO: Add your settings for test here. } } } 然后这样称呼它; var foodOptions = new FakeFoodList(); var foodStore = new FoodStore(foodOptions); var response = foodStore.Act(); Assert.Equal("whatever", response); 您可以执行以下操作: private Mock<IOptions<SomeSettings>> _someSettings; 并且在测试方法中: `_someSettings = 新模拟(); _someSettings.Setup(o => o.Value).Returns(new SomeSettings { ClientId = "723jsisksokskskos", ClientSecret = "sjhs;~jspkasjd;asdj;asdpqwoepqwe", ConnectionStrings = new List<ConnectionStrings> { new ConnectionStrings { Acronym = "A1" }, new ConnectionStrings { Acronym = "A2" } } }); ` 模型结构: `公共类 SomeSettings : ISomeSettings { public const string ConfigurationName = nameof(SomeSettings); public string ClientId { get; set; } public string ClientSecret { get; set; } public string QueryCount { get; set; } public List<ConnectionStrings> ConnectionStrings { get; set; } }`