Approccio al test del programma

1

Ho progetti che necessitano di UITest e UnitTest. Se dovessi farlo come nel codice qui sotto. Quali problemi possono sorgere con tale approccio? Oppure è meglio usare un piccolo UITest isolato e un piccolo UnitTest isolato. Forse qualcuno ha già affrontato questo approccio. O forse è un grande paradigma. Penso che questo approccio sarà strettamente accoppiato e più complesso del progetto.

namespace TestProject
{
    class Program
    {
        static void Main(string[] args)
        {
            string commandLineArgs = string.Empty;

            switch (commandLineArgs)
            {
                case "UI":
                    // Run library with UI on WPF
                    break;
                case "SeriaApi":
                    // Run library without UI
                    break;
            }
        }
    }

    public interface ITest
    {
        void ConnectDevices(string controller1, string controller2);
    }

    public class ImplementationForUI : ITest
    {
        public void ConnectDevices(string controller1, string controller2)
        {
            // UI Test Realization, make the same that ImplementationForSerialApi.ConnectDevices with WPF wrapper
        }
    }

    public class ImplementationForSerialApi : ITest
    {
        public void ConnectDevices(string controller1, string controller2)
        {
            // SerialApi Test Realization, make the same that ImplementationForUI.ConnectDevices but in console
        }
    }

    public class Test
    {
        private ITest ITest;
        public Test(ITest instance)
        {
            ITest = instance;
        }
        public void RunTestCase1()
        {
            ITest.ConnectDevices(null, null);
        }
    }
}
    
posta A191919 04.01.2018 - 16:34
fonte

2 risposte

1

Or it's better to use small isolated UITest and small isolated UnitTest.

Sì, è meglio.

Per i test unitari, si desidera testare i pezzi più piccoli possibili che sono ancora funzionali (vale a dire non i dettagli di implementazione).

Una volta stabilito che tutti i pezzi funzionano individualmente, potresti avere qualche altro test che assicuri che le parti funzionino correttamente. Ad un certo punto hai verificato che la tua libreria funzioni.

Ora fai lo stesso con le tue interfacce utente: prendi in giro la libreria e prova solo la logica dell'interfaccia utente. Che cosa e quanto dovrebbe testare è un argomento completamente nuovo (che troverai già già discusso in questa pagina).

Infine, tutto ciò che resta da fare è l'avvio (il tuo metodo principale). Vedi quei due commenti che hai lì dentro? (Esegui libreria con UI / Esegui libreria senza UI). Questi dovrebbero essere davvero sostituiti con runLibraryWithUI(); e runLibraryWithoutUI(); .

Se stai facendo più di due semplici chiamate di funzione, separa questa sequenza di avvio in un nuovo modulo e prova quel modulo. Alla fine, il tuo metodo principale dovrebbe essere così semplice che non hai davvero bisogno di un test.

    
risposta data 05.01.2018 - 01:06
fonte
-2

Mi sembra brutto. Non puoi separare il codice SeriaApi in una libreria separata con i propri test di unità, quindi utilizzare quella libreria dall'applicazione utente principale?

    
risposta data 04.01.2018 - 22:06
fonte

Leggi altre domande sui tag