推荐使用 Expekt——Kotlin 的 BDD 风格断言库

推荐使用 Expekt——Kotlin 的 BDD 风格断言库

expektBDD assertion library for Kotlin项目地址:https://gitcode.com/gh_mirrors/ex/expekt

Expekt 是一个仍在开发中的行为驱动开发(BDD)风格的断言库,专为 Kotlin 设计,灵感来源于 JavaScript 的 Chai.js 库。它与你的测试框架如 JUnit 和 Spek 兼容,让你的测试代码更加清晰易读。

class ExpektTest {
    @Test
    fun helloExpekt() {
        23.should.equal(23)
        "Kotlin".should.not.contain("Scala")
        listOf(1, 2, 3).should.have.size.above(1)
    }
}

关注 @winterbe_ 获取最新的更新信息!

开始使用

Expekt 已经在 Maven 中央仓库发布,你可以很容易地在 Maven POM 或 Gradle 构建配置中添加依赖。

Maven
<dependency>
    <groupId>com.winterbe</groupId>
    <artifactId>expekt</artifactId>
    <version>0.5.0</version>
    <scope>test</scope>
</dependency>
Gradle
testCompile "com.winterbe:expekt:0.5.0"

简单上手

Expekt 提供了两种风格的断言:shouldexpect,两者都提供相同的功能。任何对象上都可以直接使用 should 属性,即使对象是 null。而 expect 函数则接受一个对象作为参数。

如果你使用 IntelliJ IDEA,IDE 将自动为你处理导入。如果你手动管理导入,只需在测试文件中引入以下之一:

import com.winterbe.expekt.expect
import com.winterbe.expekt.should

Expekt API 包含许多可链式调用的方法和属性,比如 tobewhich,它们用于提高可读性,但没有实际的语义含义。not 属性可以用来否定期望。根据初始值的类型,有许多方法和属性可用于断定值的不同方面,例如检查集合是否包含特定元素,数字是否在范围内,字符串是否匹配指定的正则模式等。

查看 API 文档 获取所有可用的断言方法和属性。

失败时的情况

当预期失败时,Expekt 会抛出一个包含详细错误信息的 java.lang.AssertionError,使你能迅速定位问题所在。

class FailingTest {
    @Test
    fun thisTestFails() {
        3.4.should.be.closeTo(3.2, delta = 0.1)
    }
}

上述测试失败后,会产生以下异常:

java.lang.AssertionError: 3.4 should be closeTo 3.2 ±0.1

	at com.winterbe.expekt.ExpectAny.fail(ExpectAny.kt:77)
	at com.winterbe.expekt.ExpectAny.verify(ExpectAny.kt:68)
	at com.winterbe.expekt.ExpectDouble.closeTo(ExpectDouble.kt:12)
	...

示例

以下是使用 should 属性的一些断言示例:

23.should.equal(23)
null.should.be.`null`
"foo".should.not.equal("bar")
3.should.satisfy { it % 2 == 1 }
3.should.be.above(2).and.below(4)
"abc".should.contain("bc").and.startWith("a")
"abc".should.not.have.length.above(3)
"abc".should.not.match(Regex("[0-9]+"))
listOf(1, 2, 3).should.contain(3).and.have.length.above(2)
listOf(1, 2, 3).should.contain.any.elements(1, 3, 4)
listOf(1, 2, 3).should.have.all.elements(1, 2, 3)
mapOf("foo" to "bar", "bar" to "foo").should.contain("foo" to "bar")

以及使用 expect 函数的示例:

expect(23).to.equal(23)
expect(null).to.be.`null`
expect("foo").not.to.equal("bar")
expect(3).not.to.satisfy { it % 2 == 1 }
expect(3).to.be.above(2).and.to.be.below(4)
expect("abc").to.contain("bc").and.to.startWith("a")
expect("abc").not.to.have.length.above(3)
expect("abc").not.to.match(Regex("[0-9]+"))
expect(listOf(1, 2, 3)).to.contain(3).and.to.have.length.above(2)
expect(listOf(1, 2, 3)).to.contain.any.elements(1, 3, 4)
expect(listOf(1, 2, 3)).to.have.all.elements(1, 2, 3)
expect(mapOf("foo" to "bar", "bar" to "foo")).to.contain("foo" to "bar")

许可证

Expekt 使用 MIT 许可,这意味着你可以自由地使用、修改并分发这个项目。


Expekt 能帮助你写出更优雅、更具表达力的测试代码,其简洁的 API 设计使得测试逻辑一目了然。不论是在大型项目中还是小型应用的开发过程中,都是提升测试体验的理想选择。立即尝试 Expekt,让测试工作更加得心应手!

expektBDD assertion library for Kotlin项目地址:https://gitcode.com/gh_mirrors/ex/expekt

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

齐游菊Rosemary

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值