Tôi cần sử dụng một số thành phần WPF trong thử nghiệm đơn vị NUnit. Tôi chạy thử nghiệm qua ReSharper, và nó không thành công với các lỗi sau khi sử dụng các đối tượng WPF:Sử dụng các thành phần WPF trong các thử nghiệm NUnit - cách sử dụng STA?
System.InvalidOperationException:
Các thread gọi phải STA, vì nhiều thành phần giao diện người dùng yêu cầu này.
Tôi đã đọc về sự cố này và có vẻ như chuỗi cần phải là STA, nhưng tôi chưa tìm ra cách thực hiện việc này. Điều gì kích hoạt sự cố là mã sau:
[Test]
public void MyTest()
{
var textBox = new TextBox();
textBox.Text = "Some text"; // <-- This causes the exception.
}
Đây không phải là một thử nghiệm đơn vị. Ngoài ra, bạn có chắc chắn muốn thử nghiệm của mình dựa vào các thành phần WPF không? Giao diện người dùng phải được tách biệt khỏi logic ứng dụng vì các lý do như trên. – Finglas
Vâng - Tôi biết rằng không có thử nghiệm thực tế ở đây và đây không phải là thử nghiệm đơn vị của tôi. Tuy nhiên - đây là mã đủ để hiển thị điểm. Ngoài ra - vấn đề liên quan đến thực tế rằng đây là một thử nghiệm đơn vị nNnit chạy qua ReSharper - vì vậy tôi cần phải giữ bối cảnh này cho câu hỏi. Điểm khác của bạn là hợp lệ mặc dù .. Tôi không muốn thử nghiệm đơn vị của tôi dựa vào các thành phần WPF, nhưng bây giờ điều này có vẻ là giải pháp tốt nhất. Sẽ xem nếu tôi có thể nhận được nó ra khỏi đó sau này .. – stiank81
Nếu bạn muốn xem lý do tại sao tôi có giao diện người dùng trong logic ứng dụng xem câu hỏi khác của tôi: http://stackoverflow.com/questions/2220842/modifying-ui-from- lệnh-using-command-binding-in-wpf – stiank81