【发布时间】:2016-05-05 21:55:05
【问题描述】:
根据this question 的回答,我对以下两种同步方法的简单易用感到满意:
func synchronized(lock: AnyObject, closure: () -> Void) {
objc_sync_enter(lock)
closure()
objc_sync_exit(lock)
}
func synchronized<T>(lock: AnyObject, closure: () -> T) -> T {
objc_sync_enter(lock)
defer { objc_sync_exit(lock) }
return closure()
}
但为了确保他们确实在做我想做的事,我想将它们包装在成堆的单元测试中。我如何编写单元测试来有效地测试这些方法(并显示它们实际上正在同步代码)?
理想情况下,我还希望这些单元测试尽可能简单明了。据推测,这个测试应该是这样的代码,如果在同步块之外运行,将给出一组结果,但在这些同步块内给出一组完全独立的结果。
【问题讨论】:
-
您是在尝试编写测试来测试同步块在一般情况下是否同步,还是在尝试测试依赖于同步块的代码是否正在同步?
-
@WillM.我对一般情况感兴趣。我想要一个单元测试来验证它是否正在同步通过它运行的任何代码。
-
好的,我扔了一些东西来证明这一点。
-
让我知道这是否是您的想法
标签: multithreading swift unit-testing synchronization