Domanda

Sono nuovo di Pex e Moles.Sto provando a eseguire Pex sul mio codice ma sto usando l'iniezione di Constructor.C'è un modo per istruire Pex su come iniettare i costruttori?

Modifica

    public UserLogic(IUserRepository userRepository)
    {
        _userRepository = userRepository;
    }

    public int GetUsersAge(int id)
    {
        User user = _userRepository.GetById(id);
        DateTime DOB = user.DOB;
        DateTime now = DateTime.Today;
        int age = now.Year - DOB.Year;
        if (DOB > now.AddYears(-age)) age--;
        return age;
    }

Devo inserire uno stub userRepository.Pex non riesce con un'eccezione NullReferenceException quando viene chiamato _userRepository.GetById (id).Ho usato Moq per i miei test unitari ma voglio passare a pex e moles

Dovrei usare PexFactories per creare i miei stub?

È stato utile?

Soluzione

Prova a passare un tipo Moles Stub a un test parametrizzato generato da Pex. Per creare un test parametrizzato, fai clic con il pulsante destro del mouse sulla classe che desideri esplorare, quindi seleziona PEX> Crea test unitario parametrizzato . Questo genera un metodo nella classe di test che contiene argomenti. I singoli test chiamano questo test parametrizzato, inviando i singoli argomenti del test.

Quando il codice sottoposto a test utilizza l'inserimento delle dipendenze tramite argomenti (ha un argomento tipizzato dall'interfaccia), il metodo di test paramterizzato generato da Pex conterrà anche lo stesso argomento del tipo di interfaccia. È possibile scrivere i propri metodi di test che chiamano anche il metodo parametrizzato, alimentandolo con i propri valori, incluso il tipo di interfaccia. Assicurati solo di non scriverli nel file generato da Pex!

Suggerisco anche di utilizzare i tipi Mole Stub, per le iniezioni di unit test. Il Microsoft Moles Reference Manual è un ottimo punto di partenza per l'apprendimento su come utilizzare le talpe nei test unitari. Quando crei il test parametrizzato, verrà creato un tipo di mole per la tua interfaccia. Configura semplicemente le deviazioni per il tuo tipo di stub, quindi passale al test parametrizzato.

La creazione di deviazioni di tipo stub è molto semplice. Suggerisco di creare un metodo di configurazione nel progetto di test, che configura le deviazioni utilizzate di frequente. Di solito aggiungo un flag di enumerazione come argomento a questo metodo, così posso dirgli facilmente quali deviazioni creare su determinati tipi, tutto in una chiamata.

Esempio di enumerazione:

[Flags()]
public enum MoleConfigurations
{
    MoleSqlClientObjects,
    DisableDirectory_Exists,
    DisableEventLogExtensions,
    DisableInitializeDatabaseObjects,
    DisableInitializeThreadingObjects,
    DisableQueueExistingDataFiles,
    DisableConstructor
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top