Как диагностировать & ldquo; TestFixtureSetUp Failed & rdquo;

Я работаю в команде поддержки базы данных с тремя администраторами баз данных, и наши рассмотренные варианты:

  1. Любой стандарт именования лучше, чем стандартный.
  2. Нет ни одного истинный "стандарт, у всех нас есть наши предпочтения
  3. Если стандарт уже установлен, используйте его. Не создавайте другой стандарт или мутные существующие стандарты.

Мы используем уникальные имена для таблиц. Таблицы имеют префикс с именем системы (или ее сокращением). Это полезно, если системный комплекс, поскольку вы можете изменить префикс для логической группировки таблиц (например, reg_customer, reg_booking и regadmin_limits).

Для полей мы ожидаем, что имена полей будут включать префикс / acryonm таблицы (т.е. cust_address1), и мы также предпочитаем использовать стандартный набор суффиксов (_id для PK, _cd для «code», _nm для «name», _nb для «number», _dt для «Date») .

Имя поля ключа Foriegn должно совпадать с полем основного поля.

т.е.

SELECT cust_nm, cust_add1, booking_dt
FROM reg_customer
INNER JOIN reg_booking
ON reg_customer.cust_id = reg_booking.cust_id

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

37
задан Roger Lipscombe 11 September 2009 в 15:37
поделиться

2 ответа

Небольшой недостаток в реализации TestFixtureSetUp (и TestFixtureTearDown) заключается в том, что какие-либо исключения не сообщаются должным образом. Я написал их первую реализацию и так и не смог заставить ее работать так, как предполагалось. В то время концепции в коде NUnit были тесно связаны с идеей, что действия были напрямую связаны с одним тестом. Таким образом, отчет обо всем был связан с результатом теста. На самом деле не было места для того, чтобы сообщить о том, что произошло на уровне набора, без огромной переписывания (это не рефакторинг, когда вы превращаете овцу в эскалатор).

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

@TrueWill имеет правильную идею. Проверьте журналы, а затем измените тест, чтобы при необходимости добавить дополнительные журналы. Возможно, вы захотите поместить в try / catch внутри TestFixtureSetup и много регистрировать в блоке catch. Я просто подумал, что могу добавить к нему фон (другими словами, это как бы моя вина).

Возможно, вы захотите поместить в try / catch внутри TestFixtureSetup и много регистрировать в блоке catch. Я просто подумал, что могу добавить к нему фон (другими словами, это как бы моя вина).

Возможно, вы захотите поместить в try / catch внутри TestFixtureSetup и много регистрировать в блоке catch. Я просто подумал, что могу добавить к нему фон (другими словами, это как бы моя вина).

25
ответ дан 27 November 2019 в 03:50
поделиться

Сначала я бы проверил журнал сборки.

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

Если у вас установлена ​​Visual Studio на сервере CI, вы можете попробовать запустить сборку / тесты оттуда. Если это проблема с подключением, это может ее решить.

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

11
ответ дан 27 November 2019 в 03:50
поделиться
Другие вопросы по тегам:

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