Есть и другие вопросы по этой проблеме, но я пытаюсь понять, как подойти к модульному тестированию примерно так:
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();
}
}
Это мой механизм блокировки домотканого вращения (только для учебных целей). Как бы я проверил безопасность потока этого? Я знаю, что нет никаких гарантий, когда речь идет о модульном тестировании параллельного кода, но как мне вообще написать о модульном тесте, который ПЫТАЕТСЯ протестировать очевидные инварианты, присущие этому механизму блокировки?