Тест maven не работает на восточном языке, а успех IDEA

Это тестовый класс:

@AutoConfigureTestDatabase
@Sql(value = {"classpath:/ut_user_init.sql"})
public class UserControllerTest extends MockMvcTest {
    @Test
    @WithUserDetails(value = MockData.ADMIN_USERNAME, userDetailsServiceBeanName = "mockUserDetailsService")
    public void testGetUser() throws Exception {}
}

И класс UserController:

@RequestMapping("list")
public String list(Model model) {
   userService.findByName("[An Eastern character]")
}

И в классе UserService:

User findByName(String name) {
     return userRepository.findByName(name); // name is in Eastern language.
}

Это связанные данные в ut_user_init.sql

INSERT INTO `user` VALUES ('32', '[The Eastern character]');

Эффективно pom.xml:

<maven.compiler.encoding>utf-8</maven.compiler.encoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

Теперь странно: если я использую IDEA, класс Service возвращает результат поиска, но если я использую mvn test -Dtest=path.to.TestClass, он потерпит неудачу, потому что возврат будет нулевым. Но если я напечатаю результат userRepository.findAll().size(), я вижу, что он печатает правильное количество записей, перечисленных в файле sql. И я также попытался напечатать результат userRepository.findOne(32L), как в MinGW (для Windows используются GDB для восточных языков, а исходные файлы - в UTF-8), а Linux печатает случайный код для name. В то время как у IDEA нет этой проблемы, она возвращает результат, и он печатает восточный символ как есть. Почему mvn и IDEA ведут себя по-разному, и что вызвало неудачу mvn и как это решить? Спасибо.

Ответ 1

Я предполагаю, что когда вы запускаете из командной строки, вы берете системную кодировку по умолчанию, которая может быть не UTF-8.

Попробуйте следующее:

mvn test -DargLine="-Dfile.encoding=UTF-8" -Dtest=MyTestClassName