测试项目无法在正在测试的项目中找到对象

时间:2011-08-18 20:47:30

标签: c# visual-studio visual-studio-2010 unit-testing testing

我正在使用Visual Studio 2010并创建了一系列单元测试。

以下是一个例子:

    [TestMethod()]
    [HostType("ASP.NET")]
    [AspNetDevelopmentServerHost("C:\\Users\\Employee\\Documents\\Code Spaces\\shopvote2\\trunk\\Web", "/Web")]
    [UrlToTest("http://localhost/Web")]
    public void GetUserDetailsTest()
    {
        api_Accessor target = new api_Accessor(); // TODO: Initialize to an appropriate value
        string username = string.Empty; // TODO: Initialize to an appropriate value
        string passhash = string.Empty; // TODO: Initialize to an appropriate value
        int requestID = 0; // TODO: Initialize to an appropriate value
        ShoppingRequestDetailsData[] expected = null; // TODO: Initialize to an appropriate value
        ShoppingRequestDetailsData[] actual;
        actual = target.GetUserDetails(username, passhash, requestID);
        Assert.AreEqual(expected, actual);
        Assert.Inconclusive("Verify the correctness of this test method.");
    }

问题是,它说:

找不到类型或命名空间名称'ShoppingRequestDetailsData'(您是否缺少using指令或程序集引用?)

无法将类型'ShoppingWithFriends.ShoppingRequestDetailsData []'隐式转换为'ShoppingRequestDetailsData []'

它从中获取它的命名空间,我可以运行不需要自定义类的测试。只有这些才会给我带来麻烦。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:7)

要检查的一些事项:

首先,我会仔细检查项目中的引用 - 是项目引用还是程序集引用?如果它是一个程序集引用,你确定它指向正确的文件版本吗? (例如,如果您重命名目录,可能它指向旧目录)。可以肯定的是,使用像Reflector这样的工具直接检查程序集,并确保类型位于正确的命名空间中。

其次,我不确定这是不是你的问题,但我有一个类似的问题,即使在同一个解决方案中有一个项目引用,类型是公共的等等,找不到命名空间。

事实证明,我需要将“目标框架”更改为“.NET Framework 4”而不是“.NET Framework 4 Client Profile”。我没有理会为什么这会导致“未知命名空间”错误,但它解决了我的问题。

只需要检查几件事,希望它有所帮助...

约翰