Можно ли обойти определенное исключение в модульном тестировании? - PullRequest
0 голосов
/ 13 декабря 2018

Можно ли вообще обойти определенные исключения в mockito?Это звучит безумноВы хотите поймать ожидаемые исключения в модульном тестировании, которое я предполагаю.Однако я решил попробовать задать этот вопрос.Вот мой сценарий, надеюсь, что я смогу улучшить мое понимание mockito и общих unit test принципалов с помощью этого.

Мне нужно создать простой модульный тест для определенного класса Foo в корпоративном веб-приложении, используяmockito Framework модульного тестирования.

Этот класс Foo требует подключения ldap и database, однако по причине я не могу использовать специфичные для среды разработки ldap и database в модулетестовое задание.

Мне просто нужно проверить доступ к детали ldap, чтобы я решил использовать unboundid in memory ldap, который позволяет создавать легкий каталог во время выполнения и удалять его из памяти после завершения тестирования.

Мой вопрос во время создания класса Foo с помощью аннотации @InjectedMocks, он вызывает цепную реакцию вызова многих других классов и их методов.Он выдал много исключений, которые я ожидал.

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

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

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

Все, что я хочу сделать, это:

  1. Создание экземпляра Foo class
  2. Вызов одного из его методов, который будет читать списокгруппы из In memory ldap
  3. Проверьте возвращенные данные

Вот версия теста класса, проверенного водой:

@RunWith(MockitoJUnitRunner.class)
public class FooTest {

    private static InMemoryDirectoryServer ldapServer;
    private static Integer ldapPort = xxxxx;

    @InjectedMocks
    Foo footester = Foo.getInstance();

    @BeforeClass
    public static void setUpBeforeClass() {
        try {
            // execute instantiate in memory ldap..
        } catch (Exception e) {
           // do print out
        }
    }

    @Test
    public void testLdap() {
       // before it reaches here exceptions were thrown
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        // do tear down execution
    }
}

1 Ответ

0 голосов
/ 13 декабря 2018

Вы можете поймать исключение как это:

@Test(expected = YourExceptionHere.class)
public void testSomething()
{
    foo(FOO_VALUE);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...