Tôi đã viết lớp truy cập của riêng mình vào một công cụ trò chơi. Có một GameLoop được gọi là mọi khung hình cho phép tôi xử lý mã của riêng mình. Tôi có thể làm những việc cụ thể và kiểm tra xem những điều này có xảy ra không. Theo cách rất cơ bản, nó có thể trông giống như thế này:Cách kiểm tra mã không đồng bộ
void cycle()
{
//set a specific value
Engine::setText("Hello World");
//read the value
std::string text = Engine::getText();
}
Tôi muốn kiểm tra xem lớp Engine
có hoạt động không bằng cách viết kiểm tra tự động. Tôi có một số kinh nghiệm trong việc sử dụng khung Unittest Boost cho các bài kiểm tra so sánh đơn giản như thế này.
Vấn đề là, một số thứ tôi muốn động cơ thực hiện chỉ được xử lý sau khi gọi tới số cycle()
. Vì vậy, hãy gọi số Engine::getText()
trực tiếp sau Engine::setText(...)
sẽ trả về một chuỗi trống. Nếu tôi đợi đến khi cuộc gọi tiếp theo của cycle()
giá trị phù hợp sẽ được trả lại.
Tôi bây giờ tự hỏi làm thế nào tôi nên viết bài kiểm tra của tôi nếu nó không thể xử lý chúng trong cùng một chu kỳ. Có bất kỳ thực hành tốt nhất nào không? Có thể sử dụng phương pháp "thử nghiệm truyền thống" được đưa ra bởi khung Boost Unittest trong môi trường như vậy không? Có lẽ các khuôn khổ khác nhằm vào một trường hợp đặc biệt như vậy không?
Tôi đang sử dụng C++ cho mọi thứ ở đây, nhưng tôi có thể tưởng tượng rằng có câu trả lời không liên quan đến ngôn ngữ lập trình.
UPDATE: Không thể để truy cập Engine
ngoài cycle()
Trừ khi Động cơ có thể báo hiệu bạn theo cách xử lý xong, tôi không thực sự thấy việc này hoạt động. Rất tò mò để xem câu trả lời của người khác, mặc dù. –