2009-03-26 32 views
42

Tôi là người mới thử nghiệm đơn vị, sử dụng Microsoft.VisualStudio.TestTools.UnitTesting;Tại sao Assert.IsInstanceOfType (0.GetType(), typeof (int)) không thành công?

0.GetType() thực sự là System.RuntimeType, vậy tôi cần viết loại bài kiểm tra nào để vượt qua Assert.IsInstanceOfType(0.GetType(), typeof(int))?

--- theo dõi, đây là lỗi của riêng tôi dùng ... Assert.IsInstanceOfType(0, typeof(int))

+0

Bạn đang cố gắng làm gì? Không có mục đích để khẳng định rằng một hằng số là một loại cụ thể. Nếu đây là mã đồ chơi vì lợi ích của một ví dụ, nó không đủ cụ thể. –

+0

Mẫu này nếu vì lợi ích của câu hỏi này. Trong thử nghiệm thực tế của tôi tôi đang làm một số phản ánh và và nhận được một tài sản mà là loại int nhưng thử nghiệm không thành công ... tuy nhiên Assert.IsTrue (0.GetType() == typeof (int)) sẽ vượt qua – Dave

+0

Tôi muốn nói rằng câu hỏi này có thể bị xóa, nó không phải là hữu ích – Dave

Trả lời

68

Thay đổi cuộc gọi đến sau

Assert.IsInstanceOfType(0, typeof(int)); 

Tham số đầu tiên là đối tượng đang được thử nghiệm, không phải là loại đối tượng đang được thử nghiệm. bằng cách vượt qua 0.GetType(), bạn đang nói là "RunTimeType" một thể hiện của System.int là false. Dưới sự bao trùm thes gọi chỉ giải quyết để

if (typeof(int).IsInstanceOfType(0)) 
16

Hình như nó phải được

Assert.IsInstanceOfType(0, typeof(int)) 

biểu hiện của bạn hiện đang đánh giá để xem nếu RunTimeType là một thể hiện của RunTimeType, mà nó không phải là.

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