Al momento della stesura di questa risposta, l'ultima versione di NUnit è v3.5 e xUnit.net è v2.1.
Entrambi i framework sono fantastici ed entrambi supportano l'esecuzione di test paralleli (in un modo diverso però). NUnit è in circolazione dal 2002, è ampiamente utilizzato, ben documentato e ha una vasta comunità, mentre xUnit.net è più moderno, più aderente a TDD, più estensibile e anche di tendenza nello sviluppo di .NET Core. È anche ben documentato.
In aggiunta a ciò, la differenza principale che ho notato è il modo in cui xUnit.net esegue i metodi di test. Quindi, in NUnit , abbiamo una classe di test e una serie di metodi di test. NUnit crea una nuova istanza della classe di test e quindi esegue tutti i metodi di test dalla stessa istanza. Mentre xUnit.net crea una nuova istanza della classe di test per ciascuno dei metodi di test.. Pertanto, non è possibile utilizzare campi o proprietà per condividere dati tra metodi di test, il che è una cattiva pratica, poiché i nostri metodi di test dipenderebbero l'uno dall'altro, il che non è accettabile in TDD. Quindi, se usi xunit.net, potresti essere sicuro che i tuoi metodi di test sono completamente isolati.
Se sei disposto a condividere alcuni dati tra i tuoi metodi di prova, xUnit te lo permetterà. Pertanto, per impostazione predefinita, tutti i metodi di test sono completamente isolati, ma in casi specifici è possibile rompere intenzionalmente questo isolamento. Mi piace questo atteggiamento, ecco perché mi piace di più.