Come testare i metodi statici dei void? [duplicare]

2

Come si fa a fare un test unitario sui metodi statici di annullamento? Ho qualche altra domanda:

  1. È necessario testare le query del database come inserire, selezionare e aggiornare le query? In caso affermativo, come li test?
  2. È richiesto un test unitario per ogni metodo? In caso contrario, ci sono delle regole che dovrei tenere a mente quando decido quali metodi dovrebbero essere testati?
  3. Come faccio a testare unitamente un metodo che invia file da un sistema all'altro? L'input per questo metodo è solo l'indirizzo IP del sistema di destinazione.
  4. Qual è il modo migliore di testare i metodi privati che ho scritto? Ho cambiato il campo di applicazione in pubblico e li ho testati. È una cattiva pratica?
  5. Il metodo di prova di ogni unità deve avere una dichiarazione di affermazione? E 'possibile avere un test unitario senza una dichiarazione di affermazione? Se sì, come faccio a testarlo?

Sto facendo il test dell'unità in C # e sto usando MSTest per i test.

    
posta spdcbr 06.05.2015 - 12:43
fonte

2 risposte

4

1) È molto difficile testare metodi di vuoti statici, ma devono fare qualcosa, quindi cosa fanno? Se modificano lo stato globale, puoi leggere quello stato globale, ma la cosa migliore è ridistribuirli in una struttura migliore.

2) Il test delle unità è solo per metodi pubblici. Anche se testate tutti i metodi, probabilmente non potete inserire tutte le combinazioni di parametri, quindi anche se ci sono test, possono ancora esserci dei bug. Se si scrive solo codice di produzione provocato da un test non funzionante (TDD), sarà molto più chiaro quali test sono necessari.

3) Questo non è un test unitario ma un test di integrazione. È possibile leggere il file in qualche modo? In che modo scriverei quel test di integrazione.

4) Non testare metodi privati. Non fanno parte del contratto e tu sei libero di cambiarli finché non cambia il comportamento dei metodi pubblici. Se ritieni che ci sia troppo da fare nei metodi privati, sentiti libero di spostare parte della logica in un servizio e inietta quello.

5) In alcuni casi ha senso avere un test unitario che controlli che alcuni codici vengano eseguiti senza generare un'eccezione e in tal caso non è necessaria l'asserzione.

    
risposta data 06.05.2015 - 13:11
fonte
-1

Senza entrare in un argomento su cosa sia un test di 'unità':

  1. Sì, dovresti provare il tuo sql / sprocs. soprattutto se (stupidamente) mettete dentro la logica aziendale. puoi utilizzare le istantanee del database per configurare dbs

link

  1. 'Test tutti i tuoi metodi' è una buona regola perché non consente spazio per l'interpretazione. Quando sei un programmatore di rockstar (come me) puoi testare un sottoinsieme dei tuoi metodi (YOLO!)

  2. Estrarre la scrittura del flusso sottotono in modo da essere in grado di iniettare un flusso simulato e testare la logica senza effettivamente inviare dati tra sistemi. cioè indirizzo IP non trovato, connessione persa ecc.

  3. Reflection, internalsVisibleTo o (my fave) Rendilo protetto, eredita la classe e aggiungi un accesso pubblico

link

  1. Sì, puoi anche affermare che viene lanciata un'eccezione

link

    
risposta data 06.05.2015 - 13:27
fonte

Leggi altre domande sui tag