【问题标题】:Unit Testing Concurrent Code单元测试并发代码
【发布时间】:2010-01-10 02:45:29
【问题描述】:

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

事实证明,这很难。至少,对我来说是这样。

那么您将如何处理这个问题?举个例子,我什至不知道从哪里开始测试关键部分。

【问题讨论】:

  • 你将在一个周末编写一个跨平台并发原语库。令人印象深刻!
  • 哈哈,这就是目标!如果我做不到,总会有另一个周末需要充实。不断学习是游戏的名称。

标签: c++ unit-testing concurrency


【解决方案1】:

不要考虑单元测试,要考虑要指定的行为。例如:

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 有帮助。

【讨论】:

  • 我如何测试我“不能”获得锁,因为它只会自旋锁定直到我可以。
  • 请看我在答案中提供的链接,特别是Given_a_locked_MutexWrapper
猜你喜欢
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 2014-03-23
  • 2013-04-16
  • 2012-09-02
  • 2016-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多