Как создать модульный тест, чтобы определить, редактировал ли кто-либо файл, используя неправильную кодировку? - PullRequest
0 голосов
/ 01 марта 2019

Я использую Java, Spring и хотел бы предотвратить использование некоторых недопустимых символов в файлах свойств сообщений.

В некоторых колледжах используются разные операционные системы, IDE и настройки.Поскольку наш язык португальский, а кодировка Windows по умолчанию - Windows-1252 (или CP-1252), при редактировании файлов часто возникает путаница с особыми (акцентированными) символами, такими как á, ã, õ и т. Д., Так как некоторые из нихможет использовать другую кодировку и испортить файл свойств сообщений, например:

1002 = O pedido não foi encontrado
1003 = O pedido j� est� finalizado
1004 = A situa��o do hist�rico do pedido n�o � permitida

Приведенный выше файл изначально является файлом UTF-8, но кто-то редактирует файл с кодировкой Windows-1252, добавляя две новые записи(1003 и 1004) и создание этих странных вопросительных знаков на месте акцентов при чтении файла как файла UTF-8.

Итак, я думаю о модульном тесте для обнаружения этой проблемы нафайл.Как я могу сделать этот модульный тест?Спасибо!

1 Ответ

0 голосов
/ 01 марта 2019

Я нашел ответ с помощью @Mayamar и этот ответ .

@Test
public void verifyInvalidCharsOnMessages() throws IOException {
    verifyInvalidChars("src/main/resources/i18n/messages.properties");
    verifyInvalidChars("src/main/resources/i18n/messages_pt_BR.properties");
}

private void verifyInvalidChars(String file) throws IOException {
    Properties p = new Properties();
    FileInputStream input = new FileInputStream(new File(file));
    p.load(new InputStreamReader(input, Charset.forName("UTF-8")));

    Enumeration<String> enums = (Enumeration<String>) p.propertyNames();
    while (enums.hasMoreElements()) {
        String key = enums.nextElement();
        String value = p.getProperty(key);
        if (value.indexOf('\uFFFD') > 0) {
            fail();
        }
    }

}
...