Как мы можем использовать maven-redis-plugIn при написании тестов интеграции в Spock - PullRequest
0 голосов
/ 26 сентября 2018

Я пишу интеграционные тесты, используя spock-framework, я могу использовать maven-cassandra-plugin, т.е. перед выполнением интеграционных тестов cassandra запускается и загружает файл cql (который мы упомянули в атрибуте configuration maven-cassandra-plugin, тогда наши тесты будут запущены, после выполнения тестов cassandra завершит работу. Так же, как я хотел использовать maven-redis-plugin. Я видел следующие примеры плагинов в сети

<plugin>
            <groupId>ru.trylogic.maven.plugins</groupId>
            <artifactId>redis-maven-plugin</artifactId>
            <version>1.4.6</version>
            <configuration>
                <forked>true</forked>
            </configuration>
            <executions>
                <execution>
                    <id>launch-redis</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>

                </execution>
                <execution>
                    <id>stop-redis</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>shutdown</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

Пример 2:

<plugin>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>exec-maven-plugin</artifactId>
   <version>1.4.0</version>
   <executions>
      <execution>
         <id>launch-redis</id>
         <phase>pre-integration-test</phase>
         <goals>
            <goal>exec</goal>
         </goals>
         <configuration>
             <executable>redis-server</executable>
             <arguments>
            <argument>${project.basedir}/src/test/redis/redis.conf</argument>
          <argument>--port</argument>
          <argument>${redisPort}</argument>
       </arguments>
    </configuration>
 </execution>
 <execution>
    <id>shutdown-redis</id>
    <phase>post-integration-test</phase>
    <goals>
       <goal>exec</goal>
    </goals>
    <configuration>
       <executable>redis-cli</executable>
       <arguments>
          <argument>-p</argument>
          <argument>${redisPort}</argument>
          <argument>shutdown</argument>
       </arguments>
    </configuration>
 </execution>

Я хочу вставить некоторые данные в кеш, а затем, используя мои классы тестирования интеграции, я хочу выполнить операции CRUD с этими данными

1 Ответ

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

К тому времени, когда Спок начинает выполняться, Redis уже должен быть запущен и работать.

Таким образом, имеет смысл заполнить некоторые "тестовые" данные непосредственно перед тестом.В Spock вы можете использовать один из следующих методов (называемых «приспособлением»):

def setup() {}          // run before every feature method
def cleanup() {}        // run after every feature method
def setupSpec() {}     // run before the first feature method
def cleanupSpec() {}   // run after the last feature method

См. Здесь дополнительная информация об этих методах приспособления

Даже еслитест завершается неудачно, методы cleanup / cleanupSpec будут вызываться платформой, которая является хорошим средством для очистки данных redis.

Конечно, чтобы все это работало, вам придется настроитьподключение Redis.

Поскольку это интеграционный тест, есть вероятность, что уровень драйвера Redis в любом случае будет запускаться с теста, поэтому вы сможете использовать его повторно, если работаете с Springили что-то.Трудно сказать более подробную информацию, учитывая предоставленную вами информацию, но в любом случае данные должны быть заполнены непосредственно перед тестом и очищены сразу после теста.

...