При рассмотрении кода стажера я обнаружил модульный тест, который выглядит так (в которой переменная доставка имеет значение, присвоенное ему во время настройки, и метод предоставил inenotePage.InformfromDeliverynote разделить статьи на примечании доставки на несколько страниц): < /p>
[TestMethod]
public void InformFromDeliveryNote_WithMaxArticlesLimit_ReturnsCorrectNumberOfPages()
{
// Arrange
const int maxArticlesPerPage = 2;
// Act
List result = DeliveryNotePage.InformFromDeliveryNote(deliveryNote, maxArticlesPerPage).ToList();
// Assert
var totalArticles = deliveryNote.AllArticles.Count();
var expectedPages = (int)Math.Ceiling((double)totalArticles / maxArticlesPerPage);
Assert.AreEqual(expectedPages, result.Count);
}
< /code>
Моя первая мысль состояла в том, чтобы рассмотреть этот модульный тест не очень полезным. Мое обоснование для этого заключается в том, что такой подход, помимо того, что я, на мой взгляд, немного сложнее понять, на самом деле не проверяет результаты тестируемого метода, а скорее просто дублировать его реализацию (что означает, что тест может пройти даже, если реализация неверна), и поэтому следует избегать, когда это возможно. Я бы лично записал тест, используя фиксированное значение, а не вычислял его динамически и добавил комментарии, чтобы читатель мог знать о переменной и значениях свойства, которые в противном случае не были бы очевидны, взглянув только на единый тест, такой как: < /p>
[TestMethod]
public void InformFromDeliveryNote_WithMaxArticlesLimit_ReturnsCorrectNumberOfPages()
{
// Arrange
const int maxArticlesPerPage = 2;
// Act
List result = DeliveryNotePage.InformFromDeliveryNote(deliveryNote, maxArticlesPerPage).ToList();
// Assert
// Delivery note has 3 items, which should be divided into 2 pages with a maximum of 2 items per page
Assert.AreEqual(2, result.Count);
}
< /code>
Однако я знаю, что рассматриваемый стажер много использует AI (более конкретно Claude.ai), чтобы генерировать его код, и поэтому я решил, что это мог быть подход, который AI предпочитал. Любопытно, я копировал два подхода и спросил ИИ, какой он считал лучшим, и, к моему удивлению, он выбирает первый. Его основная причина заключалась в том, что первый подход более адаптируется, и его успех или неудача не будут изменяться в зависимости от значений, присвоенных свойствам примечания доставки во время установки, что делает его более адаптируемым. Я понимаю, что мой текущий подход, который заключается в том, чтобы использовать данные базы данных SQLITE в памяти для модульного тестирования, может быть довольно тяжелым, когда речь идет о поддержании набора данных и связанных с ними тестов, но этот ответ не посвящен моему основному моменту, что первый подход использует тестовый код, слишком похожий на производственный код, чтобы быть действительно полезным. Когда я выразил эту довольно простую заботу для ИИ, вместо того, чтобы обращаться к нему, он сразу же изменил свою мелодию и внезапно согласился с тем, что второй подход был лучше, оставив меня совершенно смущенным. Мне было бы любопытно узнать, что более опытные разработчики считают лучшей практикой.
Подробнее здесь: https://stackoverflow.com/questions/795 ... it-testing
Динамически рассчитанное против фиксированного значения, как ожидается, результат в модульном тестировании ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
AssertionError: нет значения в пути JSON «$.id» при модульном тестировании API.
Anonymous » » в форуме JAVA - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
AssertionError: нет значения в пути JSON «$.id» при модульном тестировании API.
Anonymous » » в форуме JAVA - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-