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

posted @ mercoledì 18 maggio 2005 13:21

Print
Comments have been closed on this topic.
«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011