Comment utiliser les cas de test dans NUnit 2.5?
J'ai un Currency
classe, que je persiste à ma base de données à l'aide de NHibernate. Currency
classe ressemble à ceci:
public class Currency : Entity
{
public virtual string Code { get; set; }
public virtual string Name { get; set; }
public virtual string Symbol { get; set; }
}
J'ai écrit une unité de test à l'aide de [TestCase]
comme ceci:
[TestCase(6,Result = new Currency ({ Code="GBP", Name="British Pound", Symbol="£"}))]
public Currency CanGetCurrencyById(int id)
{
ICurrencyRepo currencies = new RepoFactory().CreateCurrencyRepo(_session);
Currency c = currencies.GetById<Currency>(id);
return c;
}
Je sais que c'est mal, mais je ne suis pas sûr de la façon de l'écrire. Peut-être le résultat d'une object
?
OriginalL'auteur Mark Allison | 2012-01-15
Vous devez vous connecter pour publier un commentaire.
Attribut argument (pour
Result
) doit être une expression constante. Vous ne pouvez pas créer des objets comme vous le faites maintenant.À l'aide de
TestCase
attribut est utile pour tester les cas où vous avez besoin de vérifier plusieurs simples entrées/sorties. Dans votre scénario, vous pouvez cependant faire quelque chose comme ceci (qui est, si vous ne l'intention de vérifier si l'id-code de la cartographie est correct):Aussi, jetez un oeil à
cas de test
de la documentation - ils fournissent de très bons exemples.Modifier:
Par la cartographie des tests je voulais vérifier si votre ORM mappages (NHibernate de base de données) sont corrects et le travail comme vous le souhaitez. Vous habituellement test que dans le scénario suivant:
Currency
)Save
+Flush
+Evict
combinaison pour assurer NHibernate ne stocke pas enregistré entité en cache plus)Si un tel test passe ensuite, il a plus ou moins dit que vous je peux sauver cette entité, avec ces valeurs, et je peux ensuite extrait avec exactement les mêmes valeurs. Et c'est tout ce que vous vouliez savoir - mappages sont corrects.
Avec
TestCase
attribut tho, la vérification de l'exactitude de l'ensemble des objets est assez difficile - il est destiné à tester des choses simples. Vous pouvez utiliser des solutions de contournement comme suggéré dans d'autres réponse (passage d'arguments parTestCase
), mais il devient rapidement illisible et difficile à maintenir (imaginez entité avec 6+ propriétés à vérifier).Je suggère divisant votre test dans un qui vérifie si la cartographie de
id
àcode
est correct (mais je vois peu d'intérêt à le faire, sauf si vous toujours plan de disposer de certaines id mappé à certains codes) et un autre pour vérifier siCurrency
entité est correctement mappé à table de base de données.par la cartographie de test vous permet de vérifier qu'ORM mappages sont corrects (par exemple. que si vous enregistrez une entité avec
DateTime
bien défini, il est mappé et enregistré sans aucune perte d'information). Voir mon edit.OriginalL'auteur k.m
Dans des cas comme cela, j'ai passer des arguments du constructeur pour le résultat attendu dans le cas de test, et, ne le vérifier moi-même. Bien qu'il n'est pas aussi concis, il fait le travail.
OriginalL'auteur dasblinkenlight