0

我正在使用 编写集成测试spock-framework,我可以在执行集成测试开始并加载文件maven-cassandra-plugin之前使用 ie (我们在属性中提到过,然后我们的测试将运行,运行后测试将关闭。以同样的方式我想用。我在网上看到过以下插件示例cassandracqlconfigurationmaven-cassandra-plugincassandramaven-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 操作

4

1 回答 1

0

当 Spock 开始执行时,Redis 应该已经启动并运行了。

因此,在测试之前填充一些“测试”数据是有意义的。在 Spock 中,您可以使用以下方法之一(称为“fixture”方法):

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 或其他方式运行它,您将能够重用它。鉴于您提供的信息,很难说出更多细节,但无论如何,数据应该在测试之前填充并在测试之后立即清理。

于 2018-09-29T12:44:04.790 回答