在试图在Visual Studio Professional 2008的测试功能中创建初始的、失败的单元测试时,我似乎无法
Assert.ReferenceEquals()
当对象实例
不
等于空引用。注意
object.ReferenceEquals()
正确返回
false
同样的比较。
这是我的班级代码:
public static class Project
{
public static object TheObject { get; set; }
public static void Startup(object theObject)
{
// ToDo: Project.Startup(): Test.
// ToDo: Project.Startup(): Implement.
}
}
接下来是我的测试课的关键方面:
[TestClass()]
public class ProjectTest
{
[TestMethod()]
public void StartupTest()
{
object obj = "hello";
Project.Startup(obj);
Assert.ReferenceEquals(obj, Project.TheObject); // Test Passes!?!
}
}
请注意
static void Startup(object)
方法为空,因此
static object TheObject
属性从未设置并保留
null
. 所以,很明显,
Assert.ReferenceEquals(obj, Project.TheObject)
应该失败了,但无论如何,这个测试通过了。
注意变化
assert.referenceequals(obj,project.theobject)
到
Assert.IsTrue(object.ReferenceEquals(obj, Project.TheObject))
使此测试
正确地
失败了。
这似乎太简单了,但我看不出这里出了什么问题。如果有人能用我的方式指出错误,我将不胜感激。
事先谢谢,
迈克
更新由James Avery回答:
啊,我现在有多傻。我
知道
一定是这样的。真的。
当然,“goToDefinition”会带我到“object.referenceEquals()”。所以键入“assert.referenceequals()”实际上是System.Object.referenceequals(),在我的例子中,它悄悄地返回“false”。当然,这与断言的失败无关,因此测试
传球
. 太神了。
谢谢杰姆斯。