Весеннее загрузочное тестирование ошибки десериализации Json - невозможно создать экземпляр - PullRequest
0 голосов
/ 11 января 2019

У меня проблема и ниже код: -

MainService.java

public void someMethod(Message message){

A aObj = new A (someEnumClass.enumValue, message)

someService.saveData(aObj)

}

public Class A extends B {

int x,y,z;

A(SomeEnumClass enumValue,int c){

super(enumValue);

}

Public abstract class B<EnumClass extends Enum<EnumClass>>{

private EnumClass enumValue

}

Теперь приведенный выше код работает:

Но когда я тестирую, используя мой класс ниже

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class MyDemoTests {
  @Autowired
    private SomeService someService;

    @Autowired
    private someRepo repository;


    @Test
        public void testMyservice() throws Exception {
            List<A> results = repository.findAll();
            assertThat(results).containsAll(all);

        }

Я получаю приведенную ниже ошибку по "результатам": -

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.lang.Enum` (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
 at [Source: (InputStreamReader); line: 1, column: 123] (through reference chain: com.example.A["enumValue"])

высоко ценится. Спасибо

1 Ответ

0 голосов
/ 11 января 2019

AFAIK, вы не должны расширять Enum, как вы! Единственный допустимый способ - public enum .... Поэтому невозможно создать абстрактный базовый класс перечисления!

В зависимости от того, что вы действительно хотите сделать, вы можете достичь того же с помощью интерфейса, содержащего методы по умолчанию. Перечисление может реализовывать интерфейсы.

...