【发布时间】:2014-06-26 13:49:14
【问题描述】:
我正在学习 Coursera 的算法,第一部分课程。我必须使用以下 API 创建一个 RandomizedQueue:
public class RandomizedQueue<Item> implements Iterable<Item> {
public RandomizedQueue() // construct an empty randomized queue
public boolean isEmpty() // is the queue empty?
public int size() // return the number of items on the queue
public void enqueue(Item item) // add the item
public Item dequeue() // delete and return a random item
public Item sample() // return (but do not delete) a random item
public Iterator<Item> iterator() // return an independent iterator over items in random order
public static void main(String[] args) // unit testing
}
问题:如果我不能创建一个模拟 RNG 来传递到结构中(因为我不允许更改 API)并且我不想测试私有方法,如何我要测试这个结构的随机行为吗?
我的尝试
我尝试将我期望的结果视为一个概率问题。因此,例如,我将运行以下伪代码测试 10,000 次:
create new RandomizedQueue
enqueue 100 items (e.g. integers 0 - 99)
deque 1 item
然后我可以测试 100 项中的每一项的出队频率是否在某个置信区间内(基于二项分布)。
【问题讨论】:
标签: unit-testing junit junit4