unit-testing - 在 Dart 中,如何在单元测试中验证不抛出异常的 void 方法?

标签 unit-testing dart

我正在 Dart 中实现一些数据验证库。验证方法具有 void 返回类型并在错误时抛出异常。下面的代码显示了一个示例。

import 'package:quiver/check.dart';
    
void validate(int value) {
    checkArgument(value >= 0 && value <= 100);
}

在单元测试中,我可以使用以下代码来测试无效输入的异常情况:

expect(() => validate(-1), throwsArgumentError);

但是,如何验证该方法不会对有效输入抛出异常?

最佳答案

package:test 提供了一个 returnsNormally 匹配器。您将以与 throwsA/etc 相同的方式使用它。 Matcher 匹配零参数函数的位置:

expect(() => validate(-1), returnsNormally);

即使允许您的函数抛出未捕获的异常最终会导致测试失败,无论如何,使用 returnsNormally 可以导致更清晰的失败消息。

为了完整性(没有双关语意),异步函数的等价物是使用 completes匹配器:

await expectLater(someAsynchronousFunction(), completes);

关于unit-testing - 在 Dart 中,如何在单元测试中验证不抛出异常的 void 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65853973/

相关文章:

flutter - 提供程序未更新UI

dart - 如何定义使用具有默认值的可选构造函数参数初始化的私有(private) final 字段?

ios - 将 3rd 方静态库链接到静态库的测试目标结果的 undefined symbol 错误

python - 是否可以使用 Nose 同时多次运行一个测试?

c - 如何模拟 pam_handle 结构

dart - Dart :js and js package? 和有什么区别

class - 如何在 Dart 中调用父类(super class)的构造函数和其他语句?

android - Flutter VSCode:调试错误:无法使用BuildSessionServices.createFileHasher()创建FileHasher类型的服务

node.js - 如果在测试过程中无法重现错误,如何测试 catch 子句?

java - 获取 EntityManager 用于测试或生产的最佳实践