многомодульный проект: повторно использовать статический метод между тестовыми классами из разных модулей - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть многомодульный проект Java Maven.Я добавил статический метод в класс junit модуля A. Теперь я хотел бы повторно использовать этот статический метод из теста juinit модуля B.

module 1:

public class AccountDAOTest {

    private static Faker faker = new Faker();

    public static Account getRandomAccount() {
        Account account = new Account();
        account.set...(faker.idNumber().valid());
        ...
        return account;
    }

    @Test
    public void getByName() {
        Account expected = getRandomAccount();
        accountDAO.persist(expected);
        assertNotEquals(expected.getId(), null);

        Account actual = accountDAO.getByName(expected.getName());
        assertNotNull(actual);
    }

    ...
}

модуль 2 (пытается повторно использовать статический метод):

public class BusinessBeanTest {

    @Test
    public void testSomething() {
        Account account = AccountDAOTest.getRandomAccount();
        ...
    }
}

Проблема в том, что AccountDAOTest.java отсутствует в пути к классамтест модуля 2 либо я добавляю зависимость модуля в pom.xml модуля 2 с областью тестирования.

Я вижу только два решения:

  • дублируйте этот метод и скопируйте его из модуля1 тестовый класс для модуля 2 тестовый класс
  • удалить getRandomAccount () метод из тестового класса и добавить его в общий модуль как реальный код.

Нетиз двух приведенных выше решений выглядит хорошо.

Любая идея сделать это правильно?

1 Ответ

0 голосов
/ 05 февраля 2019

Как насчет создания jar только с тестами, а затем включить его в другой модуль?

Для модуля 1:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.1.1</version>
    <executions>
      <execution>
        <goals>
          <goal>test-jar</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

Для модуля 2:

    <dependency>
      <groupId>groupId</groupId>
      <artifactId>artifactId</artifactId>
      <classifier>tests</classifier>
      <type>test-jar</type>
      <version>version</version>
      <scope>test</scope>
    </dependency>
...