Ho bisogno di utilizzare alcuni componenti WPF in un test dell'unità NUnit. Corro la prova attraverso ReSharper, e viene a mancare con il seguente errore quando si utilizza l'oggetto WPF:Utilizzo dei componenti WPF nei test NUnit - come utilizzare STA?
System.InvalidOperationException:
Il thread chiamante deve essere STA, perché molti componenti dell'interfaccia utente richiedono.
Ho letto su questo problema e sembra che il thread debba essere STA, ma non ho ancora capito come farlo. Che cosa innesca il problema è il seguente codice:
[Test]
public void MyTest()
{
var textBox = new TextBox();
textBox.Text = "Some text"; // <-- This causes the exception.
}
Questa non è una prova di unità. Inoltre, sei sicuro di volere che i test facciano affidamento sui componenti WPF? L'interfaccia utente dovrebbe essere separata dalla logica dell'applicazione per motivi come quelli sopra. – Finglas
Bene - Sono consapevole che non c'è un test vero e proprio qui, e non è questo il mio test unitario. Tuttavia - questo è un codice sufficiente per mostrare il punto. Inoltre, il problema è legato al fatto che si tratta di un test dell'unità nNnit eseguito tramite ReSharper, quindi è necessario mantenere questo contesto per la domanda. Il tuo altro punto è valido anche se .. Non voglio che i miei test unitari facciano affidamento sui componenti WPF, ma per ora questa sembra essere la soluzione migliore. Vedremo se riesco a tirarlo fuori più tardi .. – stiank81
Se vuoi vedere perché ho un'interfaccia utente nella logica dell'applicazione, vedi la mia altra domanda: http://stackoverflow.com/questions/2220842/modifying-ui-from- comandi-using-command-binding-in-wpf – stiank81