我有一个创建文件的类。
我现在正在做集成测试,以确保类是好的。
我传入了无效的目录和文件名,以确保抛出异常。
在我的测试中,我使用:
[Test]
public void CreateFile_InvalidFileName_ThrowsException()
{
//Arrange
var logger = SetupLogger("?\\");
//Act
//Assert
Assert.Throws<Exception>(()=> logger.CreateFile());
}
但是在这个场景中,测试失败了,因为抛出了一个ArgumentException
。我以为只添加Exception
就可以通过。
有没有办法只用Exception
完成这一遍?
7条答案
按热度按时间vnjpjtjt1#
Assert.Throws<>
的帮助声明它“验证委托在被调用时引发特定类型的异常”尝试
Assert.That
版本,因为它将捕获任何Exception
:uurv41yg2#
对于NUnit 2.5及更高版本
8oomwypt3#
InstanceOf()允许您传递基异常类型,而不是更具体的派生类型。
htrmnn0y4#
您的异常应该是确定性的,并且您应该能够编写测试用例来设置将引发特定异常的条件,并且您应该针对该特定异常进行测试。
因此,您的测试应重写为
以及
编辑:
顺便说一句,我认为你的构造函数应该检测无效的文件名,并把它扔到那里,然后它应该是构造函数的一个契约,文件名是有效的。
axkjgtzd5#
一般来说,您应该只测试特定的例外状况,以确定您的程式码会正确回应不同的错误。
如果您真的需要允许任何异常来进行测试,只需使用标准的try/catch块和普通的Success/FailureAssert。
p1iqtdky6#
你可以用属性
ExpectedException
来标记你的测试方法,这应该是可行的。ecbunoof7#
编写您自己的方法并使用该方法进行验证。