NUnit, TestDriven. Сеть: Дублирующиеся результаты испытаний с частичными тестовыми классами

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

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

Среда тестирования является NUnit, и тесты был выполнен при помощи TestDriven. Сеть. Запустил тесты оба из единственного метода тестирования (сообщил, что два теста передали вместо одного), на классе (добрался дважды, количество тестов передало), и на целом тестовом проекте.

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

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

6
задан Svish 19 January 2010 в 14:03
поделиться

1 ответ

Нет, порядок полей заголовка не имеет значения:

Порядок, в котором принимаются поля заголовка с различными именами полей, не является значительным. Однако рекомендуется сначала отправлять общие поля заголовка, за которыми следуют поля заголовка запроса или заголовка ответа и заканчиваются полями заголовка объекта.

Только при отправке нескольких полей с одинаковыми именами. Затем значения полей обрабатываются так, как будто они появляются в одном списке:

Несколько полей заголовка сообщения с одинаковым именем поля МОГУТ присутствовать в сообщении тогда и только тогда, когда все значение поля для этого поля заголовка определено как список, разделенный запятыми [т.е. # (значения) ]. НЕОБХОДИМО объединить несколько полей заголовка в одну пару «field-name: field-value» без изменения семантики сообщения путем добавления каждого последующего значения поля к первому, каждое из которых разделено запятой. Поэтому порядок, в котором принимаются поля заголовка с одним и тем же именем поля, является существенным для интерпретации значения объединенного поля, и, таким образом, посредник НЕ ДОЛЖЕН изменять порядок этих значений поля при пересылке сообщения.

Поэтому следующее:

Cache-Control: private
Cache-Control: must-revalidate

будет эквивалентно:

Cache-Control: private, must-revalidate

И здесь это зависит от определения поля заголовка (здесь Cache-Control ), если порядок имеет значение.

-121--4716578-

Порядок получения полей заголовка с различными именами полей не является значительным. Однако рекомендуется сначала отправлять общие поля заголовка, за которыми следуют поля заголовка запроса или заголовка ответа и заканчиваются полями заголовка объекта.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 (Протокол передачи гипертекста -- HTTP/1.1)

-121--4716579-

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

3
ответ дан 17 December 2019 в 18:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: