Assert.AreEqual On Fail引发异常

时间:2011-10-25 16:00:49

标签: c# nunit

我是单元测试的新手并且使用Nunit我不知道如何传递此异常但是有一个AssertionUnhandled Exception。

我在做

Assert.AreEqual(exists, 1 == (int)ExecScalar(string.Format("SELECT COUNT(*)    
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '{0}{1}' AND TABLE_SCHEMA ='{2}'", 
            (audit ? DBHelper.AuditTablePrefix : ""), tableName, schema)));

这里存在=真,在我的情况下,其他来到1 == 0所以它说预期为真但是假。

那我该怎么办,因为我不知道我怎么能进一步前进。

提前致谢。

2 个答案:

答案 0 :(得分:0)

如果需要抛出异常(预期情况),可以使用以下代码:

Assert.Throws<ArgumentException>(delegate { throw new ArgumentException() } );

或添加

[ExpectedException(typeof(ArgumentException))]

靠近[Test]声明。

答案 1 :(得分:0)

看起来您正在尝试确保特定查询在表计数时返回1, 我建议你在Assert.DoesNotThrow()中包含这样复杂的查询,并使用Assert.AreEqual()来比较两个值:

int numberOfTables = -1;

Assert.DoesNotThrow(() => numberOfTablesRaw = 
             (int)ExecScalar(string.Format(
             "SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '{0}{1}' AND TABLE_SCHEMA ='{2}'",  
             (audit ? DBHelper.AuditTablePrefix : ""), 
              tableName, 
              schema)));

Assert.AreEqual(1, numberOfTables);