乐闻世界logo
搜索文章和话题

How do you unittest exceptions in Dart?

2 个月前提问
2 个月前修改
浏览次数12

1个答案

1

在Dart中进行单元测试时,对异常进行测试是一种常见的做法,这可以确保你的代码能够正确处理错误情况。在Dart中,我们通常使用test包来编写和运行单元测试。要测试异常,你可以使用expect函数并结合throwsA来断言某个操作会抛出特定的异常。

下面是一个关于如何在Dart中对异常进行单元测试的具体步骤和示例:

1. 添加依赖

首先确保你的pubspec.yaml文件中包含了test依赖。

yaml
dev_dependencies: test: ^1.16.0

2. 编写待测试的函数

假设我们有一个函数,该函数会在输入不符合期望时抛出一个异常。例如,一个函数接受年龄并抛出一个异常,如果年龄小于18:

dart
void checkAge(int age) { if (age < 18) { throw Exception('You must be at least 18 years old.'); } }

3. 编写测试代码

接下来,编写测试该函数的代码。我们将使用test方法定义测试用例,并使用expect函数来断言抛出了异常。

dart
import 'package:test/test.dart'; void main() { group('checkAge', () { test('throws an exception if age is under 18', () { // Arrange & Act & Assert expect(() => checkAge(17), throwsA(isA<Exception>())); }); test('does not throw an exception if age is 18 or older', () { // Arrange & Act & Assert expect(() => checkAge(18), isNot(throwsA(isA<Exception>()))); }); }); }

4. 运行测试

使用以下命令运行测试:

bash
dart test

解释

在上面的测试代码中:

  • 我们使用test函数定义了两个测试用例。
  • 使用expect来断言被测试的函数在特定条件下是否抛出异常。
    • throwsA(isA<Exception>())用来检查被测试的函数是否抛出了一个类型为Exception的异常。
    • isNot(throwsA(...))用来检查函数没有抛出异常。

通过这种方式,你可以确保你的代码在面对错误或非预期输入时能够正确地抛出异常,并且使得代码的错误处理更加健壮和可预测。

2024年7月20日 00:02 回复

你的答案