如何在 Spock 集成测试中启动 Spring Boot 应用

2024-02-15

运行集成测试的最佳方法是什么(例如,@IntegrationTest http://docs.spring.io/spring-boot/docs/1.1.0.BUILD-SNAPSHOT/api/org/springframework/boot/test/IntegrationTest.html)与斯波克?我想引导整个 Spring Boot 应用程序并执行一些 HTTP 调用来测试整个功能。

Spring Boot 应用程序在此工作 JUnit 测试中启动(首先运行应用程序,然后执行测试):

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyServer.class)
@WebAppConfiguration
@IntegrationTest
class MyTest {
   RestTemplate template = new TestRestTemplate();

   @Test
   public void testDataRoutingWebSocketToHttp() {
      def a = template.getForEntity("http://localhost:8080", String.class)
      println a
   }
}

但对于 Spock,应用程序无法启动(我怎样才能启动它?):

@SpringApplicationConfiguration(classes = MyServer.class)
@WebAppConfiguration
@IntegrationTest
class MyTestSpec extends Specification {

   RestTemplate template = new TestRestTemplate();

   def "Do my test"() {
      setup:
      def a = template.getForEntity("http://localhost:8080", String.class)

      expect:
      println a
   }
}

当然,对于 Spock,我已在 Gradle 构建文件中指定了正确的依赖项:

...
dependencies {
   testCompile 'org.spockframework:spock-core:0.7-groovy-2.0'
   testCompile 'org.spockframework:spock-spring:0.7-groovy-2.0'
}
...

问题是 Spock Spring 正在寻找 Spring 的@ContextConfiguration注释,但没能找到它。严格来讲MyTestSpec is注释为@ContextConfiguration因为它是一个元注释@SpringApplicationConfiguration但 Spock Spring 并不将元注释视为其搜索的一部分。有一个issue https://code.google.com/p/spock/issues/detail?id=349来解决这个限制。与此同时,您可以解决这个问题。

所有这些@SpringApplicationConfiguration正在做的是定制@ContextConfiguration使用特定于引导的上下文加载器。这意味着您可以通过使用适当配置的来达到相同的效果@ContextConfiguration改为注释:

@ContextConfiguration(loader = SpringApplicationContextLoader.class, classes = MyServer.class)
@WebAppConfiguration
@IntegrationTest
class MyTestSpec extends Specification {
    …
}

Update:只是为了确保它清晰(并且根据评论,事实并非如此),要使其发挥作用,您需要org.spockframework:spock-spring在类路径上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Spock 集成测试中启动 Spring Boot 应用 的相关文章

  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • 插入最大日期(独立于数据库)

    在我的本地设置中 我使用一个简单的 H2 数据库 托管 解决方案将有另一个 类似但不相同 数据库 我需要将最大可能日期插入到日期时间列中 我尝试使用 Instant MAX 但是 这会导致列中出现 169104626 12 11 20 08
  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • 正则表达式拆分数字和字母组,不带空格

    如果我有一个像 11E12C108N 这样的字符串 它是字母组和数字组的串联 如何在中间没有分隔符空格字符的情况下分割它们 例如 我希望分割结果为 tokens 0 11 tokens 1 E tokens 2 12 tokens 3 C
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • 如何使用 Java 处理 Selenium WebDriver 中的新窗口?

    这是我的代码 driver findElement By id ImageButton5 click Thread sleep 3000 String winHandleBefore driver getWindowHandle drive
  • 我需要什么库才能在 Java 中访问这个 com.sun.image.codec.jpeg?

    我正在用java创建一个图像水印程序 并导入了以下内容 import com sun image codec jpeg JPEGCodec import com sun image codec jpeg JPEGEncodeParam im
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 在 Netbeans 8 上配置 JBoss EAP 的问题

    我已经下载了 JBoss EAP 7 并正在 Netbeans 8 上配置它 我已经到达向导 实例属性 其中要求从选择框中选择 域 当我打开选择框时 它是空的 没有什么可以选择的 因此 完成 按钮也处于非活动状态 这使得无法完成配置 我通过
  • react-native run-android 失败并出现错误:任务 ':app:dexDebug' 执行失败

    我使用的是 Windows 8 1 和react native cli 1 0 0 and react native 0 31 0 添加后react native maps对于该项目 我运行了命令react native upgrade并给
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • 我可以创建自定义 java.* 包吗?

    我可以创建一个与预定义包同名的自己的包吗在Java中 比如java lang 如果是这样 结果会怎样 这难道不能让我访问该包的受保护的成员 如果不是 是什么阻止我这样做 No java lang被禁止 安全管理器不允许 自定义 类java
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 为什么这个作业不起作用?

    我有课Results which extends ArrayList
  • ServletContainer 类未找到异常

    我无法再编译我的球衣项目 并且出现以下异常 GRAVE Servlet Project API threw load exception java lang ClassNotFoundException com sun jersey spi
  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个

随机推荐

  • 有什么方法可以为函数指针比较生成警告吗?

    我花了很长时间才发现我的代码中有一个错误被触发 OPT ICF Because OPT ICF 可以导致相同的地址被分配给不同的函数或只读数据成员 使用 Gy 编译的 const 变量 它可能会破坏依赖于函数或只读数据成员的唯一地址的程序
  • Git 挂钩脚本可以与存储库一起管理吗?

    我们想要制作一些我们都可以共享的基本钩子脚本 用于预格式化提交消息之类的事情 Git 有钩子脚本 通常存储在
  • Xcode 6 链接器错误 - 架构 armv7 的未定义符号

    升级到 Xcode 6 beta 7 现在仍然使用 Xcode 6 GM 后 我无法链接我的 Swift 应用程序 我收到如下错误 架构armv7的未定义符号 swift stdlib compareNSStringDeterministi
  • 回收位图

    我正在从事涉及位图操作的项目 因为我不想出现 OutofMemoryError 所以我尝试回收每个未使用的位图 不幸的是 我回收了太多并且出现了 尝试使用回收的位图 错误 我在用 Bitmap createBitmap bmp x y w
  • 如何检查设备是否已加入 AD 或 Azure AD 加入/注册?

    我需要检查我的设备是否已加入本地域或 Azure AD 加入 注册 如何检查这个 我试过NetGetJoin信息 https learn microsoft com en us windows desktop api lmjoin nf l
  • 如何跨面或网格绘制 geom_line [重复]

    这个问题在这里已经有答案了 我的数据 Plate Month Day Concentration A April 1 17 1094 B April 2 16 001 C April 3 17 9501 D April 4 18 3686
  • 当 NSPasteboard 添加内容时收到通知

    在我的应用程序中 如果 NSPasteboard 中添加了某些内容 我希望收到通知 如果我从任何其他程序复制文本 我希望我的应用程序知道它 我在某处读到 不能那样做 我应该创建一个计时器并自己检查 NSPasteboard 的内容 这是要做
  • 检查Python脚本中的程序是否存在[重复]

    这个问题在这里已经有答案了 如何从 python 脚本检查程序是否存在 假设您想检查是否wget or curl可用 我们假设它们应该在路径中 最好能看到多平台解决方案 但目前 Linux 就足够了 Hints 运行命令并检查返回代码并不总
  • client.user.setActivity 发现为 null? (节点.js)

    我正在尝试将我的 Discord 机器人的活动设置为 游戏 但是我在网上找到的示例根本没有帮助 client user setActivity what the bot is playing 根本不起作用 它给了我这个错误 说明我正在尝试找
  • 挂起互操作 COM 对象的问题

    我有一个应用程序 它使用 COM 互操作来创建一个电子表格 该电子表格在客户端计算机上的 Excel 中打开 但是 如果我查看任务管理器 当用户关闭 Excel 时 EXCEL exe 进程并不总是结束 如果我保存工作簿并以编程方式关闭 E
  • 使用 Netty 的异步 HTTP 客户端

    我是 Netty 新手 仍在努力寻找自己的方法 我正在寻找创建一个异步工作的 http 客户端 http的netty例子只展示了如何等待IO操作 并没有展示如何使用添加监听器 所以最近几天我一直在努力解决这个问题 我正在尝试创建一个请求类
  • jQgrid 工具栏搜索 - 从任何列动态删除搜索框

    我正在使用 jqgrid 版本 4 4 4 现在我面临一个与工具栏搜索相关的问题 正如我在标题中提到的 我想从任何列中删除工具栏搜索的搜索框 动态地 在渲染网格期间或之后 我用谷歌搜索 但没有找到关于我的这个问题的任何相关解决方案 我用了s
  • 列表中 dict 对象的元素顺序

    我从 HOSTS 获得以下列表 HOSTNAME H1 H2 H3 SW VERSION 7 2 2 5 2 2 6 2 2 OSPF NEIGHBOR 10 1 1 1 10 1 1 2 10 1 1 3 我将它们转换为字典对象列表 如下
  • PayPal REST 订阅 API 未在订单摘要中显示价格

    我正在沙箱环境中测试用于订阅的 PayPal REST API 并注意到 当转到创建协议后返回的批准 URL 时 页面左侧的订单摘要窗格下没有显示价格 显示描述 但没有价格 税等 计划 ID 将传递给创建协议的调用 其中包含我希望作为用户在
  • 是否有 FAT FS 驱动程序希望引导扇区的字节 508 和 509 为零?

    在实施的同时我自己的引导扇区加载程序从 2012 年开始 https hg ulukai org ecm ldosboot rev 17884e6352e6 l1 255我确保将偏移量 508 和 509 处的字节清零 这些是标准 512
  • android 中是否有与 iphone 中相同的默认谷歌地图标记?

    我在我的 android 应用程序中使用谷歌地图 我想表示用户的当前位置默认谷歌地图标记类似于 iphone 中的地图标记 目前我使用 png 图像来表示当前位置 但需要将其替换为默认地图标记 如果 Android 中存在 如果有人知道 请
  • 如何在 Groovy 中检查该对象是列表、集合还是数组?

    问题就像标题一样简单 如何在 Groovy 中检查该对象是列表 集合还是数组 但找不到简单的方法来检查它 有任何想法吗 A List is a Collection 因此检查并不相互排斥 def foo boolean isCollecti
  • 在 silverlight 中使用自动完成框?

    我当前正在 Telerik 的 radgrid 控件中显示数据 我想在名为 Name 的列上添加一个自动文本框 我怎样才能做到这一点 我的 radgrid 仅显示数据 我希望每当用户输入文本框时都会弹出一个名称列表 就像在 stackove
  • 如何在WPF中制作反射效果? (来自代码)

    我需要在 WPF 中有一些镜像对象 我有一个包含一些内容的画布 我需要 50 个视觉克隆 如果我修改源上的某些内容 则应该在这些克隆中更新它 我知道通过将 VisualBrush 的 Visual 绑定到元素在 XAML 中很容易做到 但似
  • 如何在 Spock 集成测试中启动 Spring Boot 应用

    运行集成测试的最佳方法是什么 例如 IntegrationTest http docs spring io spring boot docs 1 1 0 BUILD SNAPSHOT api org springframework boot