单元测试并发代码

时间:2010-01-10 02:45:29

标签: c++ unit-testing concurrency

我的周末项目包括编写跨平台并发原语库(关键部分,读/写互斥,互锁整数,事件等),并想知道如何对这些东西进行单元测试。我意识到测试并发代码本身很难,但测试所述代码的原语可能不是那么难,是吗?

事实证明,这很难。至少,对我而言。

那你怎么去接近这个呢?举个例子,我甚至不知道从哪里开始测试关键部分。

1 个答案:

答案 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很有用。