似乎大多数XUnit测试框架都提供了断言,当你想要声明某个给定的操作会抛出异常时(或AS3用语中的错误.)是否有一些"标准"方法可以忽略这一点,会解释FlexUnit中是否缺少assertError()断言?
我知道如何实现这样的事情,我可能会把它添加到我的FlexUnit(开源!),但这似乎是一个明显的遗漏,我想知道我是不是做错了.
有人对此有何看法?
编辑05/02/2010:我现在建议使用FlexUnit 4.它使用可扩展的元数据系统,支持预期的异常,并且还支持在不使用AIR的情况下在集成服务器环境中运行.
编辑:您应该看看fluint,它是由拥有足够FlexUnit及其限制的人构建的.它可能内置了一些这类断言.
我完全同意.事实上,FlexUnit缺少几个有用的方法(assertEvent,assertArrayEquals等).我知道你说你知道如何实现它,但随意使用我的:
public static function assertError(message : String, func : Function, errorClass : Class = null, errorMessage : String = null, errorCodes : Array = null) : Error { _assertionsMade++; if (errorClass == null) errorClass = Error; try { func(); } catch(ex : Error) { if (!(ex is errorClass)) { fail("Expected error of type '" + getQualifiedClassName(errorClass) + "' but was '" + getQualifiedClassName(ex) + "'"); } if (errorMessage != null && ex.message != errorMessage) { fail("Expected error with message '" + errorMessage + "' but was '" + ex.message + "'"); } if (errorCodes != null && errorCodes.indexOf(ex.errorID) == -1) { fail("Expected error with errorID '" + errorCodes.join(" or ") + "' but was '" + ex.errorID + "'"); } return ex; } if (message == null) { message = "Expected error of type '" + getQualifiedClassName(errorClass) + "' but none was thrown" } fail(message); return null; }