by robert
26. August 2009 16:49
Weit jenseits von spektakulär oder elegant, aber denoch nützlich ist das Verwenden von Attributen für die Konfiguration von Verhalten. Hier ein Beispiel für die Konfiguration von Testfällen:
[TestFixture]
[RestartIocContainer(true)] [TruncateAllTables(true)]
public class CatalogDuplicationTest : TestBase
{
[Test]
public void SomeTest()
{
//
}
}
Der Testfall kümmert sich beim Ausführen des SetUps um die Auswertung der Attribute. Hier der konkrete Code aus der Basisklasse:
...
[SetUp]
public virtual void SetUp()
{
if (IsOnMethodSetupTruncateAll())
_nHibernateHelper.TruncateAll();
...
}
private bool IsOnMethodSetupTruncateAll()
{
foreach (Attribute attribute in GetType().GetCustomAttributes(true))
if (attribute.GetType() == typeof(TruncateAllTablesAttribute))
_onMethodSetupTruncateAll = ((TruncateAllTablesAttribute)attribute).Value;
return _onMethodSetupTruncateAll;
}
...
Der Vollständigkeit halber hier noch der Code für ein Attribut, wobei die MSDN das Thema Attribute hervorragend abdeckt
public class TruncateAllTablesAttribute : Attribute
{
public bool Value = true;
public TruncateAllTablesAttribute(bool value)
{
Value = value;
}
}