Почему в Arquillian больше нет издевательств? - PullRequest
1 голос
/ 25 марта 2019

Если вы перейдете на домашнюю страницу Arquillian , там будет написано: No more mocks., но если у меня есть EJB 1, который вводит EJB 2, и я хочу проверить EJB 1, как мне имитировать EJB 2, если я нене издеваетесь?Arquillian используется для интеграции, а не для модульного тестирования?Почему издеваться над Аркиллианом - плохая практика, и какова альтернатива?

1 Ответ

2 голосов
/ 26 марта 2019

Arquillian действительно используется для интеграционного тестирования, а не модульного тестирования.

Несколько плохая практика - издеваться над Arquillian, именно по этой причине.Во многом это сводит на нет цель использования Arquillian.

Тем не менее, издеваться над Arquillian в описанной вами ситуации достаточно просто.Так как режим по умолчанию в Arquillian предназначен для обеспечения сборки микроархивов с помощью shrinkwrap, вы можете просто заменить EJB2 на фиктивную версию при создании архива.

Например:

@RunWith(Arquillian.class)
public class MyTest {

    @Deployment
    public static Archive<?> deployment() {
        return ShrinkWrap.create(JavaArchive.class, "test.jar")
            .addClass(com.real.EJB1.class)
            .addClass(com.example.mock.EJB2.class)
        ;
    }

    // ..
}

Так какEJB1 не будет зависеть от фактического типа класса EJB2, а только от его (простого) имени или интерфейса, вы можете просто поменять его при создании теста.

...