Модульные тесты больше не извлекаются из файла свойств для создания экземпляра объекта и приводят к появлению нулевых укJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Модульные тесты больше не извлекаются из файла свойств для создания экземпляра объекта и приводят к появлению нулевых ук

Сообщение Anonymous »

После обновления с Java 11 до Java 17, с Junit 4 до Junit5 и обновления зависимостей моих проектов для обеспечения совместимости некоторые из моих модульных тестов завершаются неудачей, поскольку экземпляр моего класса AuthenticationProperties не создается со значениями. Он извлекается из файла свойств с помощью @ConfigurationProperties(prefix = "dealer-imagery-api.authentication") и отлично работает при полном возврате к старой настройке. У него есть вложенный класс User, который должен использовать эти свойства. Странно то, что когда я запускаю цель теста mvn через intellij, они терпят неудачу, но запуская их, щелкая пакет правой кнопкой мыши и запуская тесты (после редактирования конфигурации для использования опции VM для расшифровки паролей), они проходят. Может ли кто-нибудь помочь мне определить основную причину?
У меня есть еще один модуль, который я обновил до Java 17 и Junit 5 и после внесения необходимых изменений, в основном аннотаций junit, и запуска тестов с использованием Цель теста mvn через intellij они проходят. По какой-то причине мои свойства не используются в моих тестах. У меня есть файл свойств в main/java/resources, и я ожидал, что mvn будет использовать этот файл свойств при запуске тестов. Я попытался скопировать файл свойств в test/java/resources, но это не сработало. Раньше моим тестам не обязательно было иметь этот файл при запуске тестов.
package com.gm.gsmc.dealerimagery.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;
import java.util.StringJoiner;

@Configuration
@ConfigurationProperties(prefix = "dealer-imagery-api.authentication")
public class AuthenticationProperties {

private List users = new ArrayList();

public List getUsers() {
return users;
}

public void setUsers(List users) {
this.users = users;
}

@Override
public String toString() {
return new StringJoiner(", ", AuthenticationProperties.class.getSimpleName() + "[", "]")
.add("users=" + users)
.toString();
}

public static class User {

private String username;
private String password;
private List authorities = new ArrayList();
private String owner;

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public List getAuthorities() {
return authorities;
}

public void setAuthorities(List authorities) {
this.authorities = authorities;
}

public String getOwner() {
return owner;
}

public void setOwner(String owner) {
this.owner = owner;
}

@Override
public String toString() {
return new StringJoiner(", ", User.class.getSimpleName() + "[", "]")
.add("username='" + username + "'")
.add("password='********'")
.add("authorities=" + authorities)
.add("owner='" + owner + "'")
.toString();
}
}
}


package com.gm.gsmc.dealerimagery.config;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;

import java.util.ArrayList;
import java.util.List;

public class AuthenticationPropertiesTest {
private AuthenticationProperties instance;
private AuthenticationProperties.User user;

@BeforeEach
public void setUp() {
instance = new AuthenticationProperties();
user = new AuthenticationProperties.User();
ArrayList users = new ArrayList();
users.add(user);
instance.setUsers(users);
}

@Test
public void testSetGetUsers() {
List users = new ArrayList();
List authorities = new ArrayList();
authorities.add("user");
user.setAuthorities(authorities);
users.add(user);
instance.setUsers(users);
Assertions.assertEquals(users, instance.getUsers(), "Invalid property [users]");
}

@Test
public void testToString() {
instance.toString();
}

@Test
public void testSetGetUsername() {
user.setUsername("username");
Assertions.assertEquals("username", user.getUsername(), "Invalid property [username]");
}

@Test
public void testSetGetPassword() {
user.setPassword("password");
Assertions.assertEquals("password", user.getPassword(), "Invalid property [password]");
}

@Test
public void testSetGetAuthorities() {
List authorities = new ArrayList();
authorities.add("user");
user.setAuthorities(authorities);
Assertions.assertEquals(authorities, user.getAuthorities(), "Invalid property [authorities]");
}

@Test
public void testSetGetOwner() {
user.setOwner("owner");
Assertions.assertEquals("owner", user.getOwner(), "Invalid property [owner]");
}

@Test
public void testUserToString() {
user.toString();
}
}

Failed tests: com.gm.gsmc.dealerimagery.config.AuthenticationPropertiesTest.testSetGetAuthorities(): Cannot invoke "com.gm.gsmc.dealerimagery.config.AuthenticationProperties$User.setAuthorities(java.util.List)" because "this.user" is null
com.gm.gsmc.dealerimagery.config.AuthenticationPropertiesTest.testSetGetUsername(): Cannot invoke "com.gm.gsmc.dealerimagery.config.AuthenticationProperties$User.setUsername(String)" because "this.user" is null
com.gm.gsmc.dealerimagery.config.AuthenticationPropertiesTest.testSetGetPassword(): Cannot invoke "com.gm.gsmc.dealerimagery.config.AuthenticationProperties$User.setPassword(String)" because "this.user" is null
com.gm.gsmc.dealerimagery.config.AuthenticationPropertiesTest.testUserToString(): Cannot invoke "com.gm.gsmc.dealerimagery.config.AuthenticationProperties$User.toString()" because "this.user" is null


Подробнее здесь: https://stackoverflow.com/questions/791 ... ntiation-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»