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.