Ho alcuni casi in cui non mi interessa quale eccezione viene lanciata (finché viene lanciata qualche eccezione). Purtroppo,Ignorare le eccezioni in xUnit.net
Assert.Throws<Exception>(someDelegate);
non passa se non esattamente un esempio di Exception
(quindi non un'istanza di una classe derivata) viene generata. So che posso ottenere il comportamento che voglio con
Exception exception = Record.Exception(someDelegate);
Assert.NotNull(exception);
ma non legge bene. Mi manca qualcosa in xUnit che ha il comportamento che voglio? Qui ci sono due test che indicano quello che voglio dire:
[Fact]
public void Throws_exception_and_passes() {
Exception exception = Record.Exception(
() => { throw new InvalidOperationException(); }
);
Assert.NotNull(exception);
}
[Fact]
public void Throws_exception_and_fails() {
Assert.Throws<Exception>(
() => { throw new InvalidOperationException(); }
);
}
completamente d'accordo con il testo. Volevo solo aggiungere che [la risposta di @Jon Hanna] (http://stackoverflow.com/a/32468935/11635) dettagli l'ormai incorporato 'ThrowsAny' che implementa il comportamento desiderato dell'OP –
link è rotto. xUnit è trasferito a GitHub – mortb