Salvar objeto de depuração e de usá-lo como ramal em testes
-
05-07-2019 - |
Pergunta
As minhas Ligações de aplicativos para DB e recebe árvore de categorias daqui. Em regime de depuração eu posso ver este objeto árvore grande e eu só pensava em capacidade de salvar este objeto em algum lugar no disco para uso em topos de teste. Como esta:
mockedDao = mock(MyDao.class);
when(mockedDao.getCategoryTree()).thenReturn(mySavedObject);
Assumindo mySavedObject
- é grande o suficiente, então eu não quero gerá-lo manualmente ou escrever código especial geração. Eu só quero ser capaz de serialize e salvá-lo em algum lugar durante a sessão de depuração, em seguida, desserializar-lo e passar para thenReturn
em testes.
É que há uma maneira padrão para fazer isso? Se não como é melhor para implementar tal abordagem?
Solução
I não ame a sua ideia, é incrível!
Eu não estou ciente de uma biblioteca que iria oferecer essa funcionalidade fora da caixa. Você pode tentar usar ObjectOutoutStream
e ObjectInputStream
(ou seja, a serialização Java padrão) se os objetos todos implementar Seriablizable
. Normalmente eles não. Nesse caso, você pode ter mais sorte usando XStream ou um de seus amigos.
Outras dicas
Nós geralmente zombar todo o DB é tais cenários, reutilização (e implicitamente teste) o código para carregar as categorias do DB.
Especificamente, os nossos testes de unidade executar contra um banco de dados in-memory ( hsqldb ) , que inicializar antes de cada teste, importando dados de teste.
Tem olhada Beans dinâmico Managed - Isto oferece uma maneira de alterar valores de uma corrida aplicativo java. Talvez haja uma maneira de definir um MBean que mantém sua árvore, leia a árvore, armazená-lo em algum lugar e injetá-lo novamente mais tarde.