xUnit 中的 Assert.DoesNotThrowAsync() 发生了什么?
What happened to Assert.DoesNotThrowAsync() in xUnit?
我通过 NuGet 将我的单元测试项目从版本 2.0.0-beta-{something} 迁移到 2.0.0(稳定版)。好像 Assert.DoesNotThrowAsync()
不可用了。
例如:
[Fact]
public void CanDeleteAllTempFiles() {
Assert.DoesNotThrowAsync(async () => DocumentService.DeleteAllTempDocuments());
}
结果
DocumentServiceTests.cs(11,11): Error CS0117: 'Xunit.Assert' does not contain a definition for 'DoesNotThrowAsync' (CS0117)
解决方法是省略测试。有没有更好的解决办法?
如您在 this discussion 中所见,在 xUnit v2 中测试方法是否不抛出的推荐方法是直接调用它。
在您的示例中,这将是:
[Fact]
public async Task CanDeleteAllTempFiles() {
await DocumentService.DeleteAllTempDocuments();
}
我只是想用当前信息更新答案(2019 年 9 月)。
正如 Malcon Heck 提到的,最好使用 Record class。
查看 xUnit's Github,我发现当前检查是否没有抛出异常的方法是这样的
[Fact]
public async Task CanDeleteAllTempFiles() {
var exception = await Record.ExceptionAsync(() => DocumentService.DeleteAllTempDocuments());
Assert.Null(exception);
}
OP 正在询问有关异步的问题,但是如果其他人到这里来寻找非异步等效项,那么:
[Fact]
public void TestConstructorDoesNotThrow()
{
var exception = Record.Exception(() => new MyClass());
Assert.Null(exception);
}
我通过 NuGet 将我的单元测试项目从版本 2.0.0-beta-{something} 迁移到 2.0.0(稳定版)。好像 Assert.DoesNotThrowAsync()
不可用了。
例如:
[Fact]
public void CanDeleteAllTempFiles() {
Assert.DoesNotThrowAsync(async () => DocumentService.DeleteAllTempDocuments());
}
结果
DocumentServiceTests.cs(11,11): Error CS0117: 'Xunit.Assert' does not contain a definition for 'DoesNotThrowAsync' (CS0117)
解决方法是省略测试。有没有更好的解决办法?
如您在 this discussion 中所见,在 xUnit v2 中测试方法是否不抛出的推荐方法是直接调用它。
在您的示例中,这将是:
[Fact]
public async Task CanDeleteAllTempFiles() {
await DocumentService.DeleteAllTempDocuments();
}
我只是想用当前信息更新答案(2019 年 9 月)。
正如 Malcon Heck 提到的,最好使用 Record class。 查看 xUnit's Github,我发现当前检查是否没有抛出异常的方法是这样的
[Fact]
public async Task CanDeleteAllTempFiles() {
var exception = await Record.ExceptionAsync(() => DocumentService.DeleteAllTempDocuments());
Assert.Null(exception);
}
OP 正在询问有关异步的问题,但是如果其他人到这里来寻找非异步等效项,那么:
[Fact]
public void TestConstructorDoesNotThrow()
{
var exception = Record.Exception(() => new MyClass());
Assert.Null(exception);
}