I dispositivi di test dovrebbero essere aggiunti ai repository di codice?

4

Sono un'unità che collauda un codice che elabora i dati da un'API esterna. Quella API esterna serve una grande quantità di dati JSON.

La cosa giusta da fare qui, ovviamente, è usare le fixture nei test unitari, in modo da non fare una vera chiamata API ogni volta che si esegue il test.

Questi proiettori possono essere piuttosto grandi, anche molte migliaia di linee. Non sono sicuro se dovrei metterli in questione. Sembra una cattiva idea, dal momento che sembrano file statici. D'altro canto, scrivere i test unitari richiede davvero obiettivi specifici, quindi li voglio condivisi con chiunque lavori al progetto (e condiviso con i nostri macchinari di costruzione).

I dispositivi di grandi dimensioni dovrebbero essere impegnati in un repository?

    
posta spencer nelson 12.12.2013 - 22:34
fonte

3 risposte

11

Assolutamente sì. Chiunque dovrebbe essere in grado di eseguire i test unitari portandoli fuori dal repository. Qualsiasi automazione di build richiederà questo (dovrebbe, comunque), come lo saranno i futuri sviluppatori.

Un'alternativa potrebbe essere quella di mettere un blocco pre-test nel test dell'unità che controlla i file e li scarica se non ci sono. In questo modo è facile aggiornarli se l'API cambia, e chiunque riceva il codice sarà in grado di eseguirlo senza scavare attorno alla tua macchina per trovare i file mancanti.

Come ha sottolineato Guy, è improbabile che la compressione dei file aiuti - tra la cache dell'SSD / disco e la compressione git di cose che quasi sicuramente non vedremo aumentare la velocità. Con grandi blocchi di dati statici, potrebbe essere sensato collocare un wrapper gz attorno a loro (o simile) per accelerare il caricamento se è facile farlo nella tua lingua. Ciò spinge la dimensione verso il basso, e con dati abbastanza statici nuovi commit (e conseguenti diff) saranno molto rari.

    
risposta data 12.12.2013 - 22:44
fonte
3

A meno che tu non stia parlando di terabyte di dati (che non credo che tu sia qui), allora lo metterei nel controllo del codice sorgente. Vuoi davvero tutto nella tua soluzione di controllo del codice sorgente in modo che chiunque possa controllarlo ed eseguire l'intera suite di test senza richiedere l'aggiunta di altre dipendenze.

Inoltre, non comprimerei i dati poiché molti sistemi di controllo del codice sorgente forniscono già una compressione dietro le quinte e, se non il sistema di controllo del codice sorgente, il supporto su cui lo memorizzi può fornire la compressione. La ragione per cui in genere non comprimere i dati è che ci sono momenti in cui vorrete cambiare i dati e vorrete essere in grado di fare una differenza tra diverse versioni. Dì che i dati restituiti dalle modifiche API. Questa è una buona ragione per cambiare i dati del dispositivo.

    
risposta data 13.12.2013 - 00:04
fonte
1

Li assegnerei a qualche tipo di repository, sì.

Non ha bisogno di essere il repository principale, ma tu vuoi preservare lo sforzo che hai messo nella creazione degli apparecchi in primo luogo. Allo stesso modo, se qualcun altro lavora al progetto con te, quindi essere in grado di controllare quegli apparecchi li salverà un sacco di tempo.

    
risposta data 12.12.2013 - 22:39
fonte

Leggi altre domande sui tag