Có những câu hỏi khác về vấn đề này, nhưng tôi đang cố gắng tìm cách tiếp cận kiểm tra đơn vị một cái gì đó như thế này:Làm thế nào để viết bài kiểm tra đơn vị kiểm tra bất biến đồng thời
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();
}
}
Đây là cơ chế dệt ở nhà khóa của tôi (chỉ vì mục đích học tập). Làm thế nào tôi sẽ kiểm tra sự an toàn thread này? Tôi biết rằng không có đảm bảo khi nói đến đơn vị kiểm tra mã đồng thời, nhưng làm thế nào tôi thậm chí sẽ đi về viết một bài kiểm tra đơn vị mà ATTEMPTS để kiểm tra các bất biến rõ ràng vốn có trong cơ chế khóa này?
Phân tích tĩnh không? – UmNyobe
Không, không hoàn toàn nằm ngoài câu hỏi. Nhưng tôi tự hỏi thử nghiệm đơn vị nào thậm chí sẽ trông giống như thế này ... một lần nữa, thừa nhận rằng không có số lượng các bài kiểm tra đơn vị đảm bảo bất cứ điều gì khi nói đến đồng thời. – LuxuryMode
Nói chung, bạn sử dụng các thủ thuật khác nhau - chạy một loạt các chủ đề được gửi ngẫu nhiên, giải phóng một khóa trong một luồng trong khi hai chủ đề khác đang quay trên đó, v.v. Đó là một tác phẩm nghệ thuật. –