drl*_*drl 15 .net c# vs-unit-testing-framework
使用Visual Studio单元测试框架,我正在考虑两个选项:
Assert.AreEqual(myObject.GetType(), typeof(MyObject));
Run Code Online (Sandbox Code Playgroud)
和
Assert.IsInstanceOfType(myObject, typeof(MyObject));
Run Code Online (Sandbox Code Playgroud)
这两个选项之间有区别吗?一个比另一个更"正确"吗?
这样做的标准方法是什么?
Lee*_*Lee 25
如果类型不完全相同,则第一个示例将失败,而第二个示例仅在myObject不能分配给定类型时才会失败,例如
public class MySubObject : MyObject { ... }
var obj = new MySubObject();
Assert.AreEqual(obj.GetType(), typeof(MyObject)); //fails
Assert.IsInstanceOfType(obj, typeof(MyObject)); //passes
Run Code Online (Sandbox Code Playgroud)
小智 9
次要语法点:虽然上述Assert.AreEqual()语句可以工作,但参数的顺序应该颠倒,即Assert.AreEqual(Type expected, Type actual)。
所以,在这种情况下: Assert.AreEqual(typeof(MyObject), obj.GetType());
在 NUnit 中
Assert.That(myObject, Is.TypeOf<MyObject>()) //Tests exact type
和
Assert.That(myObject, Is.InstanceOf<MyObject>()) //Tests type and subtype
最容易理解的断言是因为 NUnit 遵循的命名:)
| 归档时间: |
|
| 查看次数: |
19368 次 |
| 最近记录: |