Индуцирование вменяемых множественных утверждений с помощью интеграционных тестов - PullRequest
0 голосов
/ 01 декабря 2011

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

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

 public void testMethod() {
  // Some operation here
  softAssert("verification failed for field 1, expected value:" +value, isValuePresent(value));
  softAssert("verification failed for field 2, expected value:" +value, isValuePresent(value));
  softAssert("verification failed for field 3, expected value:" +value, isValuePresent(value));
  // Some more assertions here
}

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

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

Ответы [ 2 ]

3 голосов
/ 01 декабря 2011

вы можете сделать то, что я бы назвал «утверждение примером», которое является просто утверждением на уровне формы.Это будет выглядеть примерно так:

public void testMethod() {
  Form expected = new Form()
                    .field1('value1')
                    .field2('value2')
                    .field3('value3')
                    .field4('value4')

  Form result = someFormOperation();

  softAssert(expected, result);

}
1 голос
/ 01 декабря 2011

Я часто вызываю toString () для некоторых результатов и assertEquals для получения правильного результата. Если ваши базовые объекты реализуют разумную toString (или toXML и т. Д.), Это упрощает тестовый код. Но он менее устойчив к будущим изменениям.

...