C# Can';t使用Xunit在异步方法中断言异常
代码测试中的一些错误引发了这个问题,由于代码的扩展,这里有一个完整的项目,它完全复制了我们的问题(以节省您分析大量行) 问题在于尝试从异步方法捕获异常时,这里是C# Can';t使用Xunit在异步方法中断言异常,c#,.net-core,xunit,xunit.net,C#,.net Core,Xunit,Xunit.net,代码测试中的一些错误引发了这个问题,由于代码的扩展,这里有一个完整的项目,它完全复制了我们的问题(以节省您分析大量行) 问题在于尝试从异步方法捕获异常时,这里是AsyncTest.cs文件: using System; using Xunit; namespace AsyncTest { public class AsyncTest { [Fact] public void ProbeTest() { //
AsyncTest.cs
文件:
using System;
using Xunit;
namespace AsyncTest
{
public class AsyncTest
{
[Fact]
public void ProbeTest()
{
// Arrange
var probe = new Probe();
// Act
Action action = async () =>
await probe.GetJob();
// Assert
var ex = Assert.Throws<InvalidOperationException>(action);
Assert.Contains("Trouble with Project.", ex.Message);
}
}
}
最后是Probe.cs
使用的MyResult.cs
类
namespace AsyncTest
{
public class MyResult<T>
{
private T _value;
public MyResult(T Value)
{
_value = Value;
}
public string Message { get; set; }
public T Data { get; set; }
}
}
namespace异步测试
{
公共类MyResult
{
私人T_值;
公共MyResult(T值)
{
_价值=价值;
}
公共字符串消息{get;set;}
公共T数据{get;set;}
}
}
显然,即使等待Task.Delay(200),测试也会在抛出异常之前结束代码>行被删除。在某些情况下,使用多个断点并将调用放入循环中,会抛出异常,但测试不会检测到异常
它看起来像是一个同步和异步的混合体,但无法准确地找出是什么
提前感谢。尝试使您的测试方法异步,并等待断言:
[Fact]
public async Task ProbeTest()
{
// Arrange
var probe = new Probe();
// Act
Func<Task> action = async () =>
await probe.GetJob();
// Assert
var ex = await Assert.ThrowsAsync<InvalidOperationException>(action);
Assert.Contains("Trouble with Project.", ex.Message);
}
[事实]
公共异步任务ProbeTest()
{
//安排
var probe=newprobe();
//表演
Func action=async()=>
等待probe.GetJob();
//断言
var ex=await Assert.ThrowsAsync(操作);
Assert.Contains(“项目有问题”,例如Message);
}
太好了!!!,谢谢众所周知,异步异常已注册到任务中,但没有弄清楚如何处理它。
[Fact]
public async Task ProbeTest()
{
// Arrange
var probe = new Probe();
// Act
Func<Task> action = async () =>
await probe.GetJob();
// Assert
var ex = await Assert.ThrowsAsync<InvalidOperationException>(action);
Assert.Contains("Trouble with Project.", ex.Message);
}