当前位置: 首页 > 知识库问答 >
问题:

gradle-如何在integarion测试之前启动spring boot server-使用maven非常简单

荀博
2023-03-14
   <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
            </configuration>
            <executions>
                <execution>
                    <id>pre-integration-test</id>
                    <goals>
                        <goal>start</goal>
                    </goals>
                </execution>
                <execution>
                    <id>post-integration-test</id>
                    <goals>
                        <goal>stop</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>com.github.eirslett</groupId>
            <artifactId>frontend-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>run e2e tests</id>
                    <phase>integration-test</phase>
                    <goals>
                        <goal>npm</goal>
                    </goals>
                    <configuration>
                        <arguments>run verify</arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>

共有1个答案

黄高爽
2023-03-14

我用gradle-spawn-plugin来处理它,但它看起来很复杂

后端/Build.Gradle

plugins {
    id "com.wiredforcode.spawn" version "0.8.2"
}
task startServer(type: SpawnProcessTask, dependsOn: 'bootJar') {
    command "java -jar ${projectDir}/build/libs/project-${version}.jar --spring.profiles.active=integration"
    ready 'Started'
}
task stopServer(type: KillProcessTask)

前端/建筑.梯度

task verify(dependsOn: ':backend:startServer', type: NpmTask) {
    // Copy from 'dist'
    inputs.files(fileTree('tests/e2e'))
    dependsOn 'npmBuild'
    args = ['run', 'verify']
}
check.dependsOn verify
verify.finalizedBy ':backend:stopServer'
"http-nio-127.0.0.1-8082-exec-2" #27 daemon prio=5 os_prio=0 cpu=462,00ms elapsed=531,88s tid=0x00007f1442a32000 nid=0x76d5 waiting on condition  [0x00007f136f021000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@11.0.7/Native Method)
        - parking to wait for  <0x0000000454d81218> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
        at java.util.concurrent.locks.LockSupport.park(java.base@11.0.7/LockSupport.java:194)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(java.base@11.0.7/AbstractQueuedSynchronizer.java:885)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(java.base@11.0.7/AbstractQueuedSynchronizer.java:917)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@11.0.7/AbstractQueuedSynchronizer.java:1240)
        at java.util.concurrent.locks.ReentrantLock.lock(java.base@11.0.7/ReentrantLock.java:267)
        at ch.qos.logback.core.OutputStreamAppender.writeBytes(OutputStreamAppender.java:197)
        at ch.qos.logback.core.OutputStreamAppender.subAppend(OutputStreamAppender.java:231)
        at ch.qos.logback.core.OutputStreamAppender.append(OutputStreamAppender.java:102)
        at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84)
        at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
        at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)
        at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257)
        at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421)
        at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:383)
        at ch.qos.logback.classic.Logger.info(Logger.java:579)
 类似资料:
  • 问题内容: 在maven中,我可以为依赖关系解析指定“类型”。我正试图拉下一个。如何使用Gradle做到这一点? 我已经尝试过使用下面的Gradle Dependency,但这并没有降低。 Maven依赖关系: 详细信息: Gradle 1.7 我正在尝试从 Maven Central 下拉“ hbase-0.94.2-tests.jar” 问题答案: Gradle没有Maven的直接等效项,但应

  • Gradle的Groovy插件声称它支持联合编译,允许自由混合和匹配Groovy和Java代码,并在两个方向上都有依赖关系“。 但是,我不认为这适用于测试代码。 我在使用位于中的类。 当尝试使用Gradle构建时,我会遇到如下错误: 请注意,是一个尚未编译的Groovy类(在Gradle输出中,我可以看到它在尝试之前没有运行,因为前者依赖于后者)。 我能够使用groovy-eclipse插件与Ma

  • 我需要测试使用@ConfigurationProperties bean的自动配置类。我正在使用中记录的ApplicationContextRunnerhttps://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-具有测试自动配置功能,可以加快测试速度,避免在每个变体之间启

  • 我无法使用maven运行spring boot应用程序的测试。我看过很多关于这个的帖子,他们的大多数解决方案是: 将junit版本与maven surefire插件或 确保junit版本不是由预定义的 我的项目不使用父级,也不使用专家-sure-fire插件。否则,根据pom文件,我没有看到任何明显的冲突。我确实看到了 ,但这是向后兼容性的纯复古依赖性的一部分。 是什么导致了这种情况? 砰的一声

  • 我正在Saucelabs中运行测试,需要在运行时设置一个名为“name”的功能,这是测试方法的名称。这必须对来自DataProvider的每个DesiredCapables对象执行。 然后,我需要实例化一个活动的RemoteWebDriver对象,以便在包含此功能的情况下运行测试。 尝试运行代码时出错: 只能将ITestContext、XmlTest、Method、Object[]、ITestRe

  • 对于我的单元测试,我使用以下注释: @runwith(SpringJunit4ClassRunner.class) @SpringBootTest(classes=MyApplication.class) 我的问题发生在我试图用Selenium测试GUI时。在我的gui测试中,我调用了一些页面并验证了html消息的内容。 我不需要模拟,我需要在我的测试前开始申请。什么是优雅的方式来做到这一点? 注