2012-02-27 5 views
0

Использование закона Arrange Assert, что должно быть в разделе «Упорядочить», учитывая, что это тест интеграции в моей базе данных?Использование шаблона Assert Act Assert с интеграционными испытаниями

private void Delete_Release_Test_Data(string conString) 
     { 
      UnitTestHelper.PrepareData(new[] { "ReleaseId" }, new object[] { 100 }); 
      UnitTestHelper.InsertPreparedData(conString, RELEASE_TABLE); 
     } 

     [Test] 
     public void Delete_Release(string conString) 
     { 
      Delete_Release_Test_Data(conString); 

      // ARRANGE 
      // What should I put here ??? 

      // ACT 
      IReleaseDataProvider provider = new ReleaseDataProvider(); 
      provider.DeleteRelease(100); 

      // ASSERT 
      Assert.IsTrue(UnitTestHelper.HasNoData(conString, string.Format("SELECT * FROM {0}", RELEASE_TABLE))); 
     } 

ответ

5

Есть ли конкретная причина, почему первая линия Delete_Release_Test_Data(conString) не под устраивать? Из this link на Arrange Закон Assert:

Каждый метод должен сгруппировать эти функциональные части, разделенные пустыми строками:

  1. организовать все необходимые предпосылки и входы.
  2. Закон об объекте или методе испытания.
  3. Утверждение, что ожидаемые результаты произошли.

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

Примечание: Вы также можете переименовать этот тест Delete_Release_When_Exists, а затем и создать тест Delete_Release_When_Doesnt_Exist проверить правильное исключение или возвращаемое значение является правильным.

+0

«Есть конкретные ...» 1.) Да, есть. Обычно мы запускаем все наши предварительные условия в методе настройки с атрибутом [Setup], который вызывается перед каждым тестом. У нас нет отдельных тестовых данных для метода (исключение в том, что я опубликовал образец ...) Итак, как наш подход подходит к шаблону AAA? «... Примечание: ...» 2.) Мой метод deleteRelease ничего не возвращает, потому что, почему он не работает? Он может быть удален только от самого автора, поэтому здесь нет параллелизма. – Pascal

+0

Ну, так как AAA сосредоточен на модульных тестах, и вы проводите интеграционный тест, вы должны использовать его скорее как приблизительное руководство и не слишком зацикливаться на деталях. Либо поставить его в блок расположения или просто не использовать, если вы используете метод [Setup], должно быть хорошо. – Lester

+0

Кроме того, мое примечание остается в силе. «Ты спрашиваешь, почему это должно терпеть неудачу?» и я могу утверждать, что в некоторых системах ожидаемое поведение происходит с ошибкой при недопустимом вводе, в то время как в вашей системе ожидаемое поведение может состоять в том, чтобы ничего не делать. – Lester

Смежные вопросы