Ошибка генерации тестового модуля Visual Studio - PullRequest
2 голосов
/ 11 июля 2011

Я пытался заставить Visual Studio 2010 создавать модульные тесты для следующего класса, однако была выдана следующая ошибка. Я исследовал и обнаружил, что это вызвано тем, что ссылка не устанавливается до того, как она используется, однако я не вижу, где эта проблема существует в моем коде.

[Serializable]
class PrintUser : IEquatable<PrintUser>
{
    public string Username { get; private set; }
    public int PageLimit { get; set; }
    public bool LimitEnforced { get; set; }

    public PrintUser(string userName)
    {
        this.Username = userName;
    }

    bool IEquatable<PrintUser>.Equals(PrintUser other)
    {
        return this.Username == other.Username;
    }
}

При попытке создать ваши тесты произошли следующие ошибки: Ссылка на объект не установлена ​​для экземпляра объекта.

ОБНОВЛЕНИЕ: я исправил проблему отсутствия проверки на ноль, однако это не решило проблему. Ошибка возникает при попытке создать тестовый код. Существует также еще одна странная ошибка, которая только что начала появляться в другом классе. Я написал класс, а затем щелкнул правой кнопкой мыши по методу equals и решил создать модульный тест только для этого метода. Затем произошла ошибка, и не было создано ни одного тестового кода.

C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ TeamTest \ Microsoft.TeamTest.targets (14,5): ошибка: подпись тела и объявление в реализации метода не совпадают , Тип: «PrintMonitorComponents.ADUserGroup_Accessor». Сборка: 'PrintMonitorComponents_Accessor, версия = 0.0.0.0, культура = нейтральная, PublicKeyToken = null'.

ОБНОВЛЕНИЕ: Класс PrintUser (показанный выше) также выдает аналогичную ошибку, которая перечислена ниже. Я обновил свой код для проверки на нулевое значение в методе equals.

Подпись тела и объявление в реализации метода не совпадают. Тип: «PrintMonitorComponents.PrintUser_Accessor». Сборка: «PrintMonitorComponents_Accessor, версия = 0.0.0.0, культура = нейтральная, PublicKeyToken = ноль». PrintMonitorComponentsTest

Ответы [ 2 ]

1 голос
/ 12 июля 2011

Понятия не имею почему, но ошибка перестала возникать после того, как я изменил реализацию интерфейса с явной на неявную.Кроме того, после этого изменения Visual Studio 2010 может нормально генерировать модульные тесты / код.

Вот ошибка, которую я получаю снова:

Подпись тела и объявленияв реализации метода не совпадают.Тип: «PrintMonitorComponents.PrintUser_Accessor».Сборка: «PrintMonitorComponents_Accessor, версия = 0.0.0.0, культура = нейтральная, PublicKeyToken = ноль».PrintMonitorComponentsTest

Вот новый код:

[Serializable]
class PrintUser : IEquatable<PrintUser>
{
    public string Username { get; private set; }
    public int PageLimit { get; set; }
    public bool LimitEnforced { get; set; }

    public PrintUser(string userName)
    {
        this.Username = userName;
    }

    public bool Equals(PrintUser other)
    {
        if (other == null)
        {
            return false;
        }
        else
        {
            return this.Username == other.Username;
        }
    }
}
0 голосов
/ 11 июля 2011

Вы должны проверить, что other не null в вашем Equals методе.

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