Как протестировать сервис JPMS с отказоустойчивым и Junit5 без создания дополнительного модуля тестирования? - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть модуль, содержащий пакет com.temp, который имеет интерфейс и реализацию службы th - ServiceInterface и ServiceImpl. И у меня есть в моем модуле-информация:

module temp {
    exports com.temp;
    provides com.temp.ServiceInterface with com.temp.ServiceImpl;
}

Это часть моего pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.22.0</version>
    <executions>
        <execution>
            <id>integration-tests</id>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
            <configuration>
                <skipTests>${skip.integration.tests}</skipTests>
            </configuration>
        </execution>
    </executions>
</plugin>

А это мой TempIT

import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;

class TempIT {

    @Test
    void tempTest() {
      System.out.println("JDKModulePath:" + System.getProperty("jdk.module.path")); //LINE Y
       ServiceLoader<ServiceInterface> loader = ServiceLoader.load(ServiceInterface.class);
       System.out.println(loader.findFirst().get().getString());//LINE X
    }

}

LINE Y печатает: JDKModulePath:null. На линии X я получаю java.util.NoSuchElementException: No value present.

Как сделать интеграционный тест службы JPMS? Можно ли выполнить за пределами модуля, чтобы проверить модуль как one whole, но без создания дополнительного модуля тестирования?

РЕДАКТИРОВАТЬ 1: Это реализация и интерфейс:

package com.temp;
public class ServiceImpl implements ServiceInterface {

    @Override
    public String getString() {
        return "This is test string";
    }
}

package com.temp;
public interface ServiceInterface {

    public String getString();
}

1 Ответ

0 голосов
/ 15 сентября 2018

Кажется, это ошибка, так как отказоустойчивый не помещает модуль в путь модуля. Смотрите выпуск https://issues.apache.org/jira/browse/SUREFIRE-1570

...