【问题标题】:Test project cannot find objects in the project it is testing测试项目在它正在测试的项目中找不到对象
【发布时间】:2011-08-18 20:47:30
【问题描述】:

我正在使用 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[]”

它会选择它来自的命名空间,我可以运行不需要自定义类的测试。只有这些给我带来了问题。

有什么想法吗?

谢谢。

【问题讨论】:

  • ShoppingRequestDetailsData 公开吗?
  • 是的,该课程是公开的,我所有的课程都是公开的,我正在尝试访问
  • “您是否缺少 using 指令或程序集引用?”

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


【解决方案1】:

需要检查的几件事:

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

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

原来我需要将“Target Framework”更改为“.NET Framework 4”而不是“.NET Framework 4 Client Profile”。我没有费心去弄清楚为什么这会导致“未知命名空间”错误,但它解决了我的问题。

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

约翰

【讨论】:

  • 对于遇到同样问题的人。就我而言,测试项目的目标框架与引用的项目不同。在这种情况下,您不会收到明确的错误消息。 VS只是告诉你它找不到引用的dll。
  • 这对我有用,将测试项目的目标框架同步到依赖项相同。
【解决方案2】:

结帐类访问修饰符。应该是公开的

【讨论】:

  • Yeah, that class is public and so are all my classes im trying to access
  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2015-03-13
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
  • 1970-01-01
  • 2019-03-19
  • 2015-10-11
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多