Truth:Google的断言和命题框架

Truth:Google的断言和命题框架

http://hao.jobbole.com/truth/
Truth 是一个测试框架,可以改进测试用例以及错误日志的可读性,而且可侦测型更强。不仅如此,它对自定义类型也有很好的扩展性。

google_truth

Truth对测试命题有一套流畅的测试风格,并且具有良好的扩展性。Truth能够在IDE中完整运行命题(proposition)或者跟踪侦测等模式,在非真命题上有多种不同的反馈方式。Truth可以声明JUnit风格的常见操作,诸如:

  • Junit风格的假设(Assume,如果指定语句执行失败则直接跳过测试)
  • 断言(Assert,如果指定语句执行失败则中断测试)
  • 预期(Expect,持续完成测试,只是将错误和失败收集起来最后集中显示)。

Truth是一个开源项目,采用Apache 2.0开源许可。因此,可以在遵循本许可条款的前提下免费使用和修改。

示例

这是我们平常使用JUnit的场景


如果出现异常, 这时候会打印出一些用处不大的异常堆栈信息,


使用Truth后:


反馈信息:


Truth的命题方式(多多少少)接近英语,这样以来更加容易看懂,并且测试报告中显示的内容也更有意义。

使用Truth的其它方式

这里给大家提供两种使用Truth的方式。

首先,Truth的主要操作是围绕一个具有不同表现形式的动作(断言、假定、预计)来开展工作。由于assert是最常用的,又偏偏是Java的一个保留关键字,所以我们采用了类似Hamcrest和FEST的做法,创建了一个独立而简短的方法,以下是它的常见用法:


而在非assert需要对这个测试动作增加额外功能时,还可以使用一种更加纯净的调用方式,通过返回这个测试动作对象来进行自定义设置,再进行测试。


Truth的帮助文档里会使用assertThat(…)来作为所有的断言例子的操作方式,除非有必须进行一些方法定义的情况。当然,assert_().that(…)的方式也是完全可用的。

所有assert_()能够做到的操作,assume()也能做到。而且,所有能够拿到“测试动作”的方式也都能做到这些。

一些常见的命题

准备

assertThat 是Truth类中的一个方法,所以一开始记得要 import static com.google.common.truth.Truth.assertThat

基本用法

集合用法

自定义错误信息

新对象,新命题

Truth对新的数据类型有很好的扩展性,开发者可以创建自定义的“主题(Subject)”,像下面这样

安装配置

要使用Truth,在maven中这样配置


或者直接通过下方的链接下载jar包,并将它加入到你测试工程的classpath中

更多的信息

需要了解更多信息,点击查看Truth到底如何工作的,还可以查看更多内置已有的命题详情

开发资源

官方网站:http://google.github.io/truth/
开源地址:https://github.com/google/truth

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个在 Python 中使用 Matplotlib 库绘制图像的函数。其中 example_data[i][0] 是要绘制的图像数据,cmap 指定了颜色映射方式为灰度图,interpolation 指定了插值方式。plt.title 函数用于设置图像的标题,其中 example_targets[i] 是标题中的文本数据。 ### 回答2: plt.imshow(example_data[i][0], cmap='gray', interpolation='none')是一段用于显示图像的代码。其中,example_data是一个表示图像数据集的变量,i表示要显示的图像的索引。[i][0]表示取出该图像的第一个通道(灰度图像只有一个通道)。 cmap='gray'是将图像以灰度的方式显示出来,使得图像呈现黑白效果。 interpolation='none'表示不对图像进行插值处理,即不进行图像的放缩和平滑处理,保持原始图像的像素。 plt.title("Ground Truth: {}".format(example_targets[i]))是一段用于显示图像标题的代码。其中,example_targets是一个与图像数据集对应的目标变量,i表示要显示的图像的索引。 "Ground Truth: {}".format(example_targets[i])是一个格式化字符串,将example_targets中第i个目标值插入到字符串中,作为图像标题。 总结起来,以上代码段的作用是在图像上显示灰度图像并给图像添加一个标题,标题内容为该图像对应的目标值。 ### 回答3: 这段代码的作用是用灰度色彩映射将example_data[i][0]中的图像显示出来,interpolation='none'表示不使用插值算法来平滑图像。plt.title("Ground Truth: {}".format(example_targets[i]))将该图像的标题设置为"Ground Truth: "后面跟着example_targets[i]的值。 这段代码的效果是显示example_data[i][0]中的图像,并在图像上方显示标题。该标题是以"Ground Truth: "开头,冒号后面跟着example_targets[i]的值。这样的标题可以用来标识该图像的真实标签或类别。 需要注意的是,example_data[i][0]应该是一个代表图像的数组或矩阵,通过指定cmap='gray'可以将其显示为灰度图像。而example_targets[i]应该是图片的真实标签或类别,它会被添加到标题中以提供额外的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值