Testing 我应该如何在Spek中设置可变测试夹具?
我正试图了解斯佩克的固定装置。很容易理解,但我不确定在某些装置有状态时如何构建安装/拆卸。例如,如果我正在测试一个列表:Testing 我应该如何在Spek中设置可变测试夹具?,testing,kotlin,fixtures,Testing,Kotlin,Fixtures,我正试图了解斯佩克的固定装置。很容易理解,但我不确定在某些装置有状态时如何构建安装/拆卸。例如,如果我正在测试一个列表: describe("a list") { val list = arrayListOf<Int>() // Only instantiated once on("adding an item") { list.add(123) it("has a size of one") { list.
describe("a list") {
val list = arrayListOf<Int>() // Only instantiated once
on("adding an item") {
list.add(123)
it("has a size of one") {
list.size.should.equal(1)
}
}
on("adding 2 items") {
list.add(1)
list.add(2)
it("has a size of 2") {
list.size.should.equal(2) // Fails, 3 != 2
}
}
}
我可以通过使变量为null来解决这个问题,但是我必须到处使用nullsafe运算符,这很糟糕,因为我知道它永远不会为null:
describe("a list") {
var list : MutableList<Int>? = null
beforeEachTest {
list = arrayListOf()
}
on("adding an item") {
list?.add(123) // Bleh
描述(“列表”){
变量列表:可变列表?=null
考试前{
list=arrayListOf()
}
关于(“添加项目”){
列表?.add(123)//Bleh
这也行得通,但意味着现在需要在两个地方复制每一位设置代码
describe("a list") {
var list = arrayListOf<Int>()
beforeEachTest {
list = arrayListOf() // Bleh
}
on("adding an item") {
list.add(123)
描述(“列表”){
var list=arrayListOf()
考试前{
list=arrayListOf()//Bleh
}
关于(“添加项目”){
列表.添加(123)
请原谅,如果这是显而易见的,但我来自JUnit世界,在那里,每一个测试之前,所有的东西(条形静力学)都会被拆除和重建,所以这一切看起来都很陌生!如果你使用Kotlin
1.1
和Spek1.1.0
你可以使用Memorized
describe("a list") {
val list by memoized { arrayListOf<Int>() }
on("adding an item") {
list.add(123)
it("has a size of one") {
list.size.should.equal(1)
}
}
on("adding 2 items") {
list.add(1)
list.add(2)
it("has a size of 2") {
list.size.should.equal(2)
}
}
}
describe("a list") {
val list by memoized { arrayListOf<Int>() }
on("adding an item") {
list.add(123)
it("has a size of one") {
list.size.should.equal(1)
}
}
on("adding 2 items") {
list.add(1)
list.add(2)
it("has a size of 2") {
list.size.should.equal(2)
}
}
}
describe("a list") {
val list = memoized { arrayListOf<Int>() }
on("adding an item") {
list().add(123)
it("has a size of one") {
list().size.should.equal(1)
}
}
on("adding 2 items") {
list().add(1)
list().add(2)
it("has a size of 2") {
list().size.should.equal(2)
}
}
}