J'ai créé un débogage d'attribut personnalisé il s'est rendu compte qu'il est appelé plusieurs fois même si je n'exécute qu'un seul test. On dirait qu'il s'appelle des attributs pour tous les tests:Constructeur d'attribut d'action de Nunit appelé plusieurs fois
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class |
AttributeTargets.Interface | AttributeTargets.Assembly,
AllowMultiple = true)]
public class DisplayModeAttribute : Attribute, ITestAction
{
private readonly string screenSize;
public DisplayModeAttribute(string screenSize)
{
this.screenSize = screenSize;
}
public void BeforeTest(TestDetails details)
{
PageFactory.SetWindowSize(screenSize);
}
public void AfterTest(TestDetails details)
{
}
public ActionTargets Targets
{
get { return ActionTargets.Test | ActionTargets.Suite; }
}
}
J'ai trois tests qui utilisent cet attribut avec de petites, grandes valeurs XSmall comme
[DisplayMode("small")]
Quand je déboguer un test, je remarque que l'attribut Le constructeur est appelé avec toutes les valeurs (petit, grand, xsmall) pour plusieurs fois (environ 40!). Et pour l'appel final, il définit la valeur avec la valeur correcte, par exemple "petit"
Vérification de la pile d'appels Je ne peux pas la voir appelée par qui.
Il est post expliquant quand exécute constructeur attribut personnalisé, basé sur ce mon constructeur devrait obtenir appelé 3 fois (bien qu'ils soient les mêmes types d'attributs avec des arguments différents). Mais dans mon cas, consructor est appelé 40 fois (environ) http://stackoverflow.com/questions/1168535/when-is-custom-attributes-constructor-run – shiva
Où mettez-vous l'attribut? – Ben