单元测试中未捕获预期的异常

问题描述

我有一个“DbCommand”类的单元测试,它在其构造函数中验证第一个参数是否接收“?”价值。如果是,则抛出 ArgumentException。

CONSTRUCTOR PUBLIC DbCommand (dbConnection AS DbConnection,cInstruction AS CHaraCTER):

    IF (dbConnection = ?) THEN
        UNDO,THROW NEW ArgumentException("DbConnection must be valid":U) .

在单元测试中,我用“?”分配第一个参数验证是否抛出异常。为此,我补充说:

@Test (expect="System.ArgumentException").
METHOD PUBLIC VOID TestDbCommand ():

    DEFINE VARIABLE oDbCommand AS DbCommand NO-UNDO .

    oDbCommand = NEW DbCommand(?,"Delete") .

但是单元测试失败,失败跟踪的第一行是: “System.ArgumentException:DbConnection 必须有效”

即使我已经在期待这个?我还有几个地方是我使用了确切的异常并且能够在@Test 标头中捕获它。但在这里它不起作用。

解决方法

@Test 注解需要使用预期的属性,而不是“预期”的预期异常。

而且我不是 100% 确定(以前从未使用过),如果 ABLUnit 支持以这种方式处理 .NET 异常 - 改用 ABL Error 类可能更安全。