Kotlin 语言参考文档 中文版 Help

顺序规格

为了确认算法实现了正确的顺序行为, 你可以为测试数据结构编写一个简单的顺序化实现, 用来定义算法的 顺序规格(sequential specification).

要指定需要验证的算法的顺序规格, 你需要:

  1. 实现一个所有测试方法的顺序化版本.

  2. 将带有顺序化实现的类传递给 sequentialSpecification() 选项:

    StressOptions().sequentialSpecification(SequentialQueue::class)

例如, 这里是一个测试, 它检查 Java 标准库的 j.u.c.ConcurrentLinkedQueue 类的正确性.

import org.jetbrains.kotlinx.lincheck.* import org.jetbrains.kotlinx.lincheck.annotations.* import org.jetbrains.kotlinx.lincheck.strategy.stress.* import org.junit.* import java.util.* import java.util.concurrent.* class ConcurrentLinkedQueueTest { private val s = ConcurrentLinkedQueue<Int>() @Operation fun add(value: Int) = s.add(value) @Operation fun poll(): Int? = s.poll() @Test fun stressTest() = StressOptions() .sequentialSpecification(SequentialQueue::class.java) .check(this::class) } class SequentialQueue { private val s = LinkedList<Int>() fun add(x: Int) = s.add(x) fun poll(): Int? = s.poll() }
最终更新: 2024/10/17