Тестовый проект не может найти объекты в проекте, который он тестирует - PullRequest
7 голосов
/ 19 августа 2011

Я использую 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 Ответ

7 голосов
/ 19 августа 2011

Несколько вещей для проверки:

Во-первых, я бы дважды проверил ссылку в вашем проекте - это ссылка на проект или ссылка на сборку? Если это ссылка на сборку, вы уверены, что она указывает на правильную версию файла? (например, если вы переименовали каталоги, возможно, он указывает на старый каталог). Чтобы быть уверенным, используйте такой инструмент, как Reflector, чтобы непосредственно проверить сборку и убедиться, что тип находится в нужном пространстве имен.

Во-вторых, я не уверен, что это ваша проблема, но у меня была похожая проблема, когда пространство имен не было найдено, даже если в том же решении была ссылка на проект, типы были общедоступными и т. Д.

Оказалось, что мне нужно было изменить "Target Framework" на ".NET Framework 4" вместо ".NET Framework 4 Client Profile". Я не удосужился выяснить, почему это привело к ошибке «неизвестное пространство имен», но это решило мою проблему.

Просто пару вещей, чтобы проверить, надеюсь, это поможет ...

John

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...