断言.AreEqual On Fail抛出异常



我是新的单元测试和使用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)));

Here exists = true,在我的例子中other的值是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); 

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

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

或添加

[ExpectedException(typeof(ArgumentException))]

靠近你的[Test]声明

最新更新