2012-01-29 34 views
5

Tôi đang gặp vấn đề lạ với thử nghiệm đơn vị trong Visual Studio 2010. Tôi có kiểm tra vượt qua khi tôi sử dụng "Kiểm tra gỡ lỗi" (không có bất kỳ điểm ngắt nào), nhưng thất bại khi tôi sử dụng "Chạy thử nghiệm". Thử nghiệm này sử dụng dll bên ngoài, vì vậy tôi không thể gỡ lỗi chính xác.Kiểm tra đơn vị trong VS2010 - lỗi "Gỡ lỗi", "Chạy" không thành công

Bạn có biết lý do nào khiến một tình huống như thế này có thể xảy ra không? Tại sao "Thử nghiệm gỡ lỗi" khác với "Chạy thử nghiệm", khi tất cả các thông số khác đều giống nhau?

+2

Bạn có bất cứ ' CondtionalAttribute' trong cơ sở mã của bạn chỉ thực thi để gỡ lỗi? Bất kỳ phần '#if Debug' nào? Trong các thư viện của bên thứ ba, hoàn toàn có thể là họ làm những việc khác nhau trong chế độ gỡ lỗi và phát hành. – Oded

+0

Thêm vào câu hỏi của Oded, có bất kỳ mã cụ thể nào là thời gian cụ thể không? Bất kỳ phần nào của mã có thể cần độ trễ sẽ chuyển khi bạn đang gỡ lỗi nhưng sẽ không thành công trong luồng thông thường. –

+0

Bạn đã kiểm tra cửa sổ kết quả kiểm tra và xem bạn đang gặp phải lỗi nào. –

Trả lời

2

Có thể có một số lý do, nhưng để chỉ định một lý do, bạn sẽ phải cung cấp cho chúng tôi một số mã để làm việc.

Nó có thể loại trừ mã:

#ifdef _DEBUG 
//do something 
#endif 

này sẽ chỉ được thực hiện trong chế độ gỡ lỗi.

Nó có thể là tối ưu hóa. Mặc dù họ không nên bình thường ảnh hưởng đến hành vi, bạn không nên dựa vào destructors hoặc sao chép constructors được gọi.

Nếu bạn đang thực hiện bất kỳ tấn công nào bên trong mã, nó cũng có thể chỉ hợp lệ để gỡ lỗi.

1

Tôi nghi ngờ rằng bạn đang truy cập bộ nhớ ngoài giới hạn. Một sự khác biệt lớn giữa gỡ lỗi và phát hành là gỡ lỗi thêm bộ dụng cụ nếu đệm và các điểm đánh dấu đặc biệt vào phân bổ bộ nhớ để bắt các loại lỗi nhất định. Điều này có nghĩa là bố trí bộ nhớ thường rất khác nhau giữa các bản dựng gỡ lỗi và bản phát hành. Tôi nghi ngờ rằng bạn đang truy cập bộ nhớ ngoài giới hạn theo cách mà trình gỡ lỗi không bắt được, nơi bạn tìm thấy giá trị vô tình hợp lệ trong phiên bản gỡ lỗi, nhưng giá trị không hợp lệ trong phiên bản phát hành.

3

Chuyển bạn giải pháp chuẩn bị tung ra chế độ thay vì Debug, chạy một đầy đủ xây dựng, chuyển đổi qua lại để gỡ lỗi và thử và cho tôi biết kết quả, tôi nghĩ rằng các bài kiểm tra sẽ vượt qua ....

+0

Điều này giải quyết được vấn đề của tôi. Cảm ơn! – gstar

Các vấn đề liên quan