2015-09-18 22 views
25

Khi thử nghiệm thư viện lớp Windows Universal (.NET 4.6) trong Visual Studio 2015, thời gian bắt buộc trong chu trình "red-> green-> refactor" là khá Dài. Dự án thử nghiệm của tôi chỉ là dự án "Thử nghiệm đơn vị ứng dụng" MSTest chuẩn. Ngay cả trong kịch bản đơn giản nhất của một giải pháp hoàn toàn mới, chủ đề hoàn toàn mới và các dự án thử nghiệm và phương pháp cơ bản int Add(int n1, int n2), nó mất khoảng 8-15 giây. Đây là thời gian (sau khi thực hiện một thay đổi mã nhỏ) từ cách nhấp vào "chạy thử nghiệm" cho đến khi vượt qua/thất bại được hiển thị.Bất kỳ cách nào để tăng tốc độ kiểm tra đơn vị trong Visual Studio 2015 cho UWP

Trên máy tính của tôi (Win 10 pro) tiến hành thử nghiệm tương tự nhưng với một giải pháp dựa trên WPF sản lượng khoảng 1-2 giây.

Trong trường hợp UWP, thời gian thử nghiệm thực tế được liệt kê là 79 mili giây. Phần còn lại của thời gian là biên dịch và triển khai vùng chứa ứng dụng thử nghiệm đơn vị.

Có cách nào để tăng tốc đáng kể TDD với UWP không?

Trả lời

32

Lý do vòng lặp TDD mất quá nhiều thời gian là vì tất cả mã UWP phải chạy trong AppContainer, và yêu cầu đóng gói và triển khai chậm.

Cách giải quyết vấn đề này là tách biệt nhiều mã của bạn khi bạn có thể vào một dự án khác không cần chạy trong AppContainer và sau đó kiểm tra dự án đó.

Giải pháp cho việc này là sử dụng thư viện lớp di động cho logic ứng dụng của bạn thay vì thư viện lớp UWP. Bạn sẽ tìm thấy thư viện lớp cầm tay trong hộp thoại dự án mới:

enter image description here

Các thiết lập mặc định nên làm việc:

enter image description here

Sau đó bạn cần phải thêm một tài liệu tham khảo từ các UWP đến thư viện di động để bạn có thể tiêu thụ nó. Để kiểm tra các thư viện di động, sử dụng một dự án phi UWP đơn vị kiểm tra thường xuyên:

enter image description here

Lưu ý - để làm cho công việc này, bạn sẽ cần phải thay đổi khuôn khổ mục tiêu của dự án đơn vị kiểm tra từ 4.5.2 (đó là mặc định) thành 4.6.

Bất kỳ kiểm tra đơn vị nào bạn chạy từ dự án thử nghiệm đơn vị thông thường sẽ chạy nhanh nhất có thể vì nó không cần chạy trong AppContainer. Tôi đã thử nghiệm điều này và tốc độ vòng lặp bên trong là tuyệt vời. Hy vọng rằng sẽ giúp!

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