Модульные тесты.NET на Чтение/Сохранение данных к базе данных

Вам нужно настроить таргетинг на элемент a, чтобы вы могли использовать дополнительную обертку в обеих ситуациях и настроить CSS, как показано ниже:

Я также исправил недопустимый HTML, поскольку вам разрешено используйте li только в качестве дочернего элемента ul

ul {
  list-style-type: none;
}

.dropdown {
  display: inline-block;
  width: 100px;
  height: 25px;
  background-color: black;
  color: white;
  padding: 20px;
  text-align: center;
  font-size: 20px;
}

.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f1f1f1;
  padding: 12px 16px;
}

.dropdown-content a {
  text-decoration: none;
}

.dropdown-content a:hover {
  text-decoration: underline;
}

.dropdown:hover .dropdown-content {
  display: block;
}
<ul>
  <li class="dropdown">list item 1
    <div class="dropdown-content">
      <a href="" target="_blank">link 1</a><br>
      <a href="" target="_blank">link 2</a>
    </div>
  </li>

  <li class="dropdown">list item 2
    <div class="dropdown-content">
      <a href="" target="_blank">link 1</a>
    </div>
  </li>
</ul>

10
задан Ruben Steins 26 February 2009 в 14:10
поделиться

7 ответов

Вы можете иметь тесты для действий дб, но стараться избегать его, если это возможно, иначе:

  • Они будут работать медленнее, чем обычные тесты (более вероятно они - интеграционные тесты),
  • Они требуют большего количества работы установки/разрушения (данные дб/схемы/таблицы)
  • Они представляют внешнюю зависимость от Вашей среды тестирования

Это может также быть запах кода, что Ваши классы не разделяют связанную с дб работу от другой работы, например, бизнес-логику. Однако это не может, мы иметь тест платформы, который проверяет, что автоматически сгенерированный сценарий SQL возвращает ожидаемое увеличенное значение идентификационных данных после вставки новых данных, AFAIK, там не способ протестировать тот этот код, работает кроме выполнить его против дб. Вы могли дразнить его или просто предположить, что, если SQL соответствует тому, что Вы ожидаете затем, что это в порядке, но мне не нравится то предположение, так как так много другого кода полагается на него.

В зависимости от Вашей среды тестирования необходимо отметить эти тесты как связанную [Базу данных], позволив Вам разделить их от других тестов.

4
ответ дан 3 December 2019 в 20:06
поделиться

это - больше интеграционный тест, чем модульный тест.

то, что я делаю в таких случаях, - то, что я создаю тест non-persisting-base, который загружает данные, необходимые для тестов в тестовом дб, и затем выполняет модульные тесты. после этого это располагает текущую транзакцию, таким образом, никакие данные не хранятся.

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

5
ответ дан 3 December 2019 в 20:06
поделиться

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

Я видел попытки насмешки инструментов ORM (этот для LINQ развлекает меня), но они не тестируют правильность запроса, только что запрос был записан в способе, которым тестер думал, что это должно быть записано. Так как тестер обычно является тем, пишущий запрос против ORM, это не обеспечивает значения вообще.

5
ответ дан 3 December 2019 в 20:06
поделиться

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

2
ответ дан 3 December 2019 в 20:06
поделиться

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

Существуют инструменты там, которые могут вывести полные лодки данных тестирования.

Генератор данных Sql от Красного Логического элемента

Сообщите нам, какой подход работал на Вас.

1
ответ дан 3 December 2019 в 20:06
поделиться
  • A: Если Вы, FlexApplication получают доступ к Вашей базе данных непосредственно, не легко протестировать. У Вас должен быть тестируемый промежуточный интерфейс/слой.
  • B: Помещение данных в базу данных нормально, чтобы иметь в "TestSetup-фазе".
  • C: Должно быть возможно протестировать интерфейс, кто на самом деле инициировал storedprocedure.
    • если это - sprocs, которые не используются GUI, но только sql-to-sql, это - также системы "там", который обычно тестирует sprocs., у Вас есть sp_setup и sp_teardown sproc прежде и после фактических тестов
0
ответ дан 3 December 2019 в 20:06
поделиться

Попытайтесь использовать mbunit. Это - среда тестирования.NET, которая позволяет Вам заполнять базу данных в своей установке и затем откатывать изменения, которые Вы сделали к базе данных во время Ваших тестов, восстановив базу данных к ее предыдущему условию. Существует быстрая рецензия на нем здесь.

2
ответ дан 3 December 2019 в 20:06
поделиться
Другие вопросы по тегам:

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