Каковы некоторые популярные соглашения о присвоении имен для Модульных тестов? [закрытый]

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

203
задан 11 revs, 6 users 66% 2 February 2017 в 03:21
поделиться

4 ответа

Я в значительной степени с Вами на этом человеке. Соглашения о присвоении имен, которые Вы использовали:

  • Ясный о том, каково каждое тестовое состояние.
  • Конкретный относительно ожидаемого поведения.

, В чем больше Вы нуждаетесь с тестового имени?

Вопреки ответ Ray я не думаю Тест , префикс необходим. Это - тестовый код, мы знаем это. Если необходимо сделать это для идентификации кода, то у Вас есть большие проблемы, , Ваш тестовый код не должен путаться с Вашим производственным кодом.

Что касается длины и использования подчеркивания, тестовый код , о ком заботится ад? Только Вы и Ваша команда будете видеть его, пока это читаемо, и ясно о том, что делает тест, продолжите!:)

Однако я все еще довольно плохо знаком с тестированием и блоггинг моих приключений с ним :)

92
ответ дан Community 23 November 2019 в 04:58
поделиться

Первый набор имен более читаем мне, так как CamelCasing разделяет слова и underbars отдельные части схемы именования.

я также склонен включать "Тест" где-нибудь, или на имя функции или на пространство имен включения или класс.

5
ответ дан Frank Szczerba 23 November 2019 в 04:58
поделиться

Пока Вы применяете единственную практику, она действительно не имеет значения. Обычно я пишу тест единого блока для метода, который касается всех изменений для метода (у меня есть простые методы;) и затем пишут более сложные наборы тестов для методов, которые требуют его. Моя структура именования является таким образом обычно тестом (пережиток от JUnit 3).

-3
ответ дан Munger 23 November 2019 в 04:58
поделиться

Я называю свои методы тестирования, как и другие методы, с использованием «PascalCasing» без каких-либо подчеркиваний или разделителей. Я оставляю постфикс Test для метода, потому что он не добавляет значения. То, что метод является тестовым, указывается атрибутом TestMethod .

[TestMethod]
public void CanCountAllItems() {
  // Test the total count of items in collection.
}

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

[TestClass]
public class SuperCollectionTests(){
    // Any test methods that test the class SuperCollection
}

Для методов, которые проверяют исключения или действия, которые невозможны, я ставлю перед методом теста префикс ] Невозможно .

[TestMethod]
[ExpectedException(typeOf(ArgumentException))]
public void CannotAddSameObjectAgain() {
  // Cannot add the same object again to the collection.
}

Мои соображения по именованию основаны на статье «Советы TDD: правила и рекомендации по именованию тестов» Брайана Кука.

22
ответ дан 23 November 2019 в 04:58
поделиться
Другие вопросы по тегам:

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