Come testare DTO gerarchici

Nel progetto appena iniziato sto provando ad adottare varie metodologie scoperte da quando sto seguendo UGIdotNET e, soprattutto dal Workshop "Architecture and Management".

Ieri, primo giorno di scrittura codice, mi sono trovato a scrivere i Data Transfer Object, che, per come è strutturato l'ambito applicativo, sono gerarchici, cioè tutti gli oggetti ereditano da un "mainobject".

Ma come scrivere dei test per gli assegnamenti, evitando di replicare per ogni oggetto tutti gli assegnamenti delle proprietà comuni?

Io ho trovato questa soluzione

// Classe DTO Padre

public abstract class MCObject {

        
private string _uuid = string.Empty;
        
private DateTime _data = DateTime.Now;
        
private DateTime _dataMod = DateTime.Now;

        
public string Uuid
        {
            
get
            
{
                
return _uuid;
            }
            
set
            
{
                _uuid = 
value;
            }
        }

        
public System.DateTime Data
        {
            
get
            
{
                
return _data;
            }
            
set
            
{
                _data = 
value;
            }
        }

}


// Classe DTO figlio

public class MCOTappo: MCObject
{
    
private string _url = string.Empty;

        
public string Url
        {
        
get
        
{
            
return _url;
        }
        
set
        
{
            _url = 
value;
        }
    }
}



// Test dell'oggetto padre con i Test per le
// proprietà generiche
// NOTA: non è marcato [TestFixture]

public class MCObjectFixture
    {

    
public MCObjectFixture() {}

    
private MCObject mco;

    
public MCObject MCO 
    {
        
set 
        
{
            mco=
value;
        }
    }

    [Test]
    
public void UuidAssignment()
    {
        
string id = "68d6d186-c6ee-11d9-98ef-0003ba99c667";
        mco.Uuid=id;
        Assert.AreEqual(id, mco.Uuid);
    }

    [Test]
    
public void DataAssignment()
    {
        DateTime 
value = DateTime.Now;
        mco.Data=
value;
        Assert.AreEqual(
value, mco.Data);
    }
    
}


// Test dell'oggetto figlio
// è marcata come [TestFixture]
// e testa solo la proprietà specifica

[TestFixture]
public class MCOTappoFixture: MCObjectFixture
{
    
private MCOTappo tappo;

    
// Nel setup creo l'oggetto da testare
    // e lo passo anche al test padre
    
[SetUp]
    
public void SetUp()
    {
        tappo = 
new MCOTappo();
        
base.MCO=tappo;
    }

    [TearDown]
    
public void TearDown()
    {
        tappo = 
null;
    }
    
    [Test]
    
public void UrlAssignment()
    {
        
string value = "http://www.ugidotnet.org";
        tappo.Url=
value;
        Assert.AreEqual(
value, tappo.Url);
    }
}

powered by IMHO 1.2

«maggio»
domlunmarmergiovensab
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234