методы тестирования, которые принимают аргументы класса - PullRequest
2 голосов
/ 12 мая 2011

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

private int countMappableFields(Class<?> type) {
    int mappableFields = 0;
    Field[] fields = type.getFields();
    for (int i = 0; i < fields.length ; i++) {
        if (FieldHelper.isMappable(fields[i]))
            mappableFields++;               
    }
    return mappableFields;
}

Должен ли я определить пару классов в отдельных файлах и ссылаться на них во всех моих тестах? Есть ли другой подход, который позволит построить объект для каждого случая?

Ответы [ 3 ]

1 голос
/ 12 мая 2011

Вы можете определить встроенные классы в вашем тестовом классе;нет причин создавать для них отдельные файлы.

public class TestCase {
    private static class NoFieldClass
    {
    }

    // And so on.

    @Test
    public void shouldFindZeroMappableFieldsInNoFieldClass() {
        assertTrue(0 == countMappableFields(NoFieldClass.class));
    }
}

Это обеспечивает чистоту области исходного кода теста.Он создаст несколько файлов классов, но по крайней мере определенные вами встроенные классы будут выглядеть как «TestCase $ NoFieldClass.class», а не как «NoFieldClass.class» верхнего уровня.

0 голосов
/ 12 мая 2011

Зависит от того, что вы тестируете.Если вы выполняете какое-то настраиваемое отражение (например, FieldHelper по какой-то причине возвращает только подмножество полей), вы, возможно, захотите на самом деле проверить объекты, на которых вы собираетесь его использовать) - то есть на самом деле запустить тесты на отражение наmap<CLass,Integer>, где классы сопоставляются с ожидаемыми значениями.

0 голосов
/ 12 мая 2011

Я бы просто сделал private static class внутри тестового класса для такого рода вещей. Если у вас есть несколько тестовых файлов, требующих одного и того же, вы можете создать классы верхнего уровня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...