9
有关于这个问题的其他问题,但我正在努力思考如何接近单元测试是这样的:如何编写单元测试,测试并发不变
public class Semaphore extends Lock {
private AtomicInteger semaphore = new AtomicInteger(0);
public synchronized boolean available() {
return semaphore.intValue() == 0;
}
public synchronized void acquire() {
semaphore.incrementAndGet();
}
public synchronized void release() {
semaphore.decrementAndGet();
}
}
这是我的朴素的锁定机制(只是为了学习目的)。我将如何测试这个线程的安全性?我知道单元测试并发代码没有保证,但我怎么会写一个单元测试,ATTEMPTS测试这个锁定机制中固有的明显不变量?
静态分析是不是问题? – UmNyobe 2012-01-31 22:29:14
不,不完全没有问题。但我更想知道什么样的单元测试甚至可以像这样的东西......再次承认,在并发性方面没有任何单元测试能够保证任何东西。 – LuxuryMode 2012-01-31 22:31:45
通常,你会使用各种技巧 - 运行一堆随机调度的线程,释放一个线程中的锁而其他两个线程正在旋转,等等。这是一门艺术。 – 2012-01-31 23:05:28