Я просто обнаружил, что получал дважды количество тестового прогона, который я должен был получать. Обнаруженный он, когда тест повредился и я получил два идентичных отказа при испытании. Тот же тест, то же все. Смутили меня вполне, но сумел сузить его к определенному тестовому классу, который был частичным классом.
Причина это был частичный класс, состояла в том, что я разделил тестовый класс в два, только для создания этого немного более чистым. Класс под тестом имел определенный метод, который потребовал большого расстояния тестов, и я думал, что это будет более чисто, чтобы иметь тесты в отдельном файле. Но с тех пор были один или два вспомогательных метода, используемые, я полагал, что мог просто сделать класс неравнодушным, таким образом, оба файла все еще имели доступ к тем методам.
Среда тестирования является NUnit, и тесты был выполнен при помощи TestDriven. Сеть. Запустил тесты оба из единственного метода тестирования (сообщил, что два теста передали вместо одного), на классе (добрался дважды, количество тестов передало), и на целом тестовом проекте.
Управляемый для устранения проблемы путем создания классов не неравнодушными и просто дублирования тех крошечных вспомогательных методов (мог бы переместить тех, которые к отдельному классу помощника или чему-то позже).
Теперь..., с какой стати это происходит? Я думал, что частичные классы были скомпилированы в единый класс? Действительно ли это - проблема с частичными классами в целом, NUnit, Test-Driven.net или чем-то совершенно другим?
Нет, порядок полей заголовка не имеет значения:
Порядок, в котором принимаются поля заголовка с различными именами полей, не является значительным. Однако рекомендуется сначала отправлять общие поля заголовка, за которыми следуют поля заголовка запроса или заголовка ответа и заканчиваются полями заголовка объекта.
Только при отправке нескольких полей с одинаковыми именами. Затем значения полей обрабатываются так, как будто они появляются в одном списке:
Несколько полей заголовка сообщения с одинаковым именем поля МОГУТ присутствовать в сообщении тогда и только тогда, когда все значение поля для этого поля заголовка определено как список, разделенный запятыми [т.е.
# (значения)
]. НЕОБХОДИМО объединить несколько полей заголовка в одну пару «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]
.