centralizza le stringhe internazionalizzate per prevenire il DRY nella suite di test rispetto alla leggibilità

1

Ho un programma già internazionalizzato con il modulo gettext, tuttavia mi infastidisce per giorni se dovrei centralizzare le stringhe (renderle variabili, in modo che possano essere indirizzate dal programma principale o dalla suite di test) all'interno di un modulo o meno. Se non sono centralizzati, ogni volta che cambio le stringhe, devo copiare / incollare manualmente le stringhe nei test di integrazione, violando DRY. Ma se sono centralizzati, sacrifica la leggibilità nel programma principale. O c'è un modo migliore per farlo?

    
posta Abirafdi Raditya Putra 04.08.2016 - 02:34
fonte

1 risposta

3

IMHO la chiave per risolvere il tuo problema è come progettare i test di integrazione, e probabilmente non ha nulla a che fare con la localizzazione o l'internazionalizzazione. In un programma non localizzato può verificarsi lo stesso problema.

Credo che i tuoi test, almeno ad un certo livello, prendano alcuni dati di input, eseguano il programma che produce un output testuale che contiene alcune stringhe localizzate. Quindi, l'output viene confrontato con un output previsto.

Qui abbiamo un sacco di programmi e test, e il modo in cui li gestiamo non è l'hardcoding dei testi di output direttamente nei test di integrazione. Invece, reindirizziamo l'output di ogni test in un file (ad esempio, in una directory "currentOutput" e un nome di file che identifica il test in un modo univoco), confrontiamo il file con un pendente in una directory "expectedOutput". Quando alcuni test falliscono, usiamo il nostro strumento diff / merge preferito e confrontiamo i diversi file e controlliamo manualmente le cause della differenza. Quando siamo sicuri che la differenza è solo causata da una modifica di stringa prevista, semplicemente copiamo il contenuto da "currentOutput" a "expectedOutput", quindi l'aggiornamento dei dati previsti è molto semplice e indolore.

TLDR; duplicare le stringhe nei test, ma rendere l'aggiornamento delle stringhe all'interno della suite di test un processo semi-automatico.

    
risposta data 04.08.2016 - 13:15
fonte

Leggi altre domande sui tag