我的周末项目包括编写跨平台并发原语库(关键部分,读/写互斥,互锁整数,事件等),并想知道如何对这些东西进行单元测试。我意识到测试并发代码本身很难,但测试所述代码的原语可能不是那么难,是吗?
事实证明,这很难。至少,对我而言。
那你怎么去接近这个呢?举个例子,我甚至不知道从哪里开始测试关键部分。
答案 0 :(得分:6)
不要考虑单元测试,考虑一下您想要指定的行为。例如:
Given_an_unlocked_lock
It_should_be_possible_to_take_it
Given_a_locked_lock
It_should_not_be_possible_to_take_it_from_another_thread
It_should_be_possible_take_it_from_the_same_thread
Given_a_locked_lock_when_unlocked
It_should_be_possible_to_take_it
Given_a_locked_lock_when_owning_thread_terminates
It_should_be_possible_to_take_it
我认为这有助于您确定要做什么。是的,你可能需要在单元测试中使用辅助线程来实现它。也许this example很有用。