НАнит, TestDriven.Net:Дублирование результатов теста с частичными тестовыми классами

StackOverflow https://stackoverflow.com/questions/2093891

Вопрос

Я только что обнаружил, что получаю в два раза больше тестов, чем должен был получить.Обнаружил это, когда тест сорвался, и я получил два идентичных сбоя теста.Тот же тест, все то же самое.Это сильно сбило меня с толку, но мне удалось сузить круг поисков до определенного тестового класса, который был частичным классом.

Причина, по которой это был частичный класс, заключалась в том, что я разделил тестовый класс на две части, просто чтобы сделать его немного более чистым.Тестируемый класс имел определенный метод, который требовал большого количества тестов, и я подумал, что было бы чище хранить их в отдельном файле.Но поскольку использовался один или два вспомогательных метода, я решил, что могу просто сделать класс частичным, чтобы оба файла по-прежнему имели доступ к этим методам.

Тестовой платформой является NUnit, и тесты были запущены с помощью TestDriven.Net.Запускал тесты как внутри одного тестового метода (сообщил о двух пройденных тестах вместо одного), так и для класса (получил вдвое большее количество пройденных тестов) и для всего тестового проекта.

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

Сейчас же...с какой стати это происходит?Я думал, что частичные классы были скомпилированы в один класс?Это проблема с частичными классами в целом, NUnit, Test-Driven.net или что-то совершенно другое?

Это было полезно?

Решение

Вы, вероятно, поставили [TestFixture] атрибут в обоих файлах частичного класса.Это приведет к TestFixture должен быть выдан дважды в определении класса IL, и NUnit дважды запустит один и тот же тестовый код.Вам следует только добавить [TestFixture] в одном из файлов для вашего частичного класса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top