Bom dia Pessoal, estou precisando de ajuda. Sou novato em Java e como aqui estão os melhores nessa linguagem resolvi recorrer a vocês para aprender um pouquinho com quem sabe. Estou implementando testes unitários no meu projeto usando o JUnit, porém, ao tentar rodar o meu teste pelo JUnit recebo esta mensagem: java.lang.NullPointerException - at br.com.issx.tipologia.controller.auxiliary.document.SizesControllerTest.testSave(SizesControllerTest.java:21), nesta linha tenho a seguinte sintaxe: List lista = sizeDao.listAll();
Alguém daqui do fórum já passou por este problema que pudesse me dar uma ajuda?
Desde já agradeço a todos!
Java.lang.NullPointerException
17 Respostas
Se você fizer uma pesquisa no GUJ mesmo sobre NullPointerException eu nem sei quantos posts você vai encontrar, de tão comum que é esse erro.
Acontece que você está tentando utilizar uma variável que está nula.
Bem vindo ao GUJ 
Se você fizer uma pesquisa no GUJ mesmo sobre NullPointerException eu nem sei quantos posts você vai encontrar, de tão comum que é esse erro.Exato.Acontece que você está tentando utilizar uma variável que está nula.
Bem vindo ao GUJ :)
Veja nessa linha: SizesControllerTest.java:21
Alguém ai está null. Falta você dar um novo valor ao atributo.
Ah, bem vindo ao guj! =D
Obrigado pelas boas vindas Rodrigo! Quanto a esta pesquisa do NullpoiterException eu até fiz, só que cada NullPointer é diferente do outro, digo em problemas. Quanto a variável nula, a única que vejo é o meu size.setId, vejam:
public class SizesControllerTest extends TestCase {
private SizeDao sizeDao;
@Test
public void testSave() {
Size size = new Size();
size.setName("Teste");
size.setId(null);
List<Size> lista = sizeDao.listAll();
assertNotNull(size.getName());
for(Size tmp : lista){
System.out.println(tmp.getName());
System.out.println(tmp.getId());
}
sizeDao.save(size);
}
}
Por favor, sempre que for postar código, o poste entre as tags [code][ /code], Leia o nosso How To para conhecer as regras do fórum e umas dicas sobre como postar.
Vou te dar uma colher de chá. É seu sizeDAO que está null.
Você mesmo disse qual linha dava o erro.
OPs, descula Rodrigo. Como disse sou novato, esse é o meu primeiro post. Depois vou dar uma olhada no link do how to.
E Hebert, obrigado pelas boas vindas também! Desculpe, só agora dei um refresh na page e vi o seu post. 
Um amigo me sugeriu substituir: a linha “private SizeDao sizeDao;” por: “private SizeDao sizeDao = new SizeDao();”, assim que substitui o Eclipse já reclamou: “Cannot instantiate the type SizeDao”
Oh my God!

SizeDAO provavelmente é uma interface.
Estou vendo que você está tendo vários problemas porque está tentando partir pro avançado sem ter conhecimentos sólidos no básico.
Eu sugiro que você procure algum livro/apostila/tutorial sobre Java Básico e OO, pois vai ser de grande ajuda pra você.
Quando entender bem orientação a objetos você tira isso de letra.
Eu sei Rodrigo, estou estudando: baixei as apostilas da Caelum FJ11 - FJ21 - FJ16. Porém vou levar um tempinho pra ler isto tudo.
rsrsrs…
De qualquer forma, vou continuar tentando aqui.
A ideia é que você não pode instanciar uma interface.
Você deve ter algum SizeDAOImpl aí, que implemente SizeDAO ou algo do tipo. Pode tentar dar um new nele.
É Rodrigo, estou descobrindo isso aos poucos, rsrsrs… Então, tenho sim o DaoImpl e vi que ele não tinha o método List, acabei de criá-lo fazendo uma simples consulta HQL já que é só pra listar os sizes, daí volto pro meu teste e o danado do NullPointerException não me abandona… hehehe.
mas você adicionou aquela linha? sizeDAO = new SizeDAOImpl();
Você diz no meu SizeDaoImpl ou no meu ControllerTest?
O meu DaoImpl está assim:
@Component
public class SizeDaoImpl extends GenericDaoImpl<Size, Long> implements SizeDao {
public SizeDaoImpl(Session session) {
super(session);
}
@Override
public void save(Size size) {
// TODO Auto-generated method stub
}
public List<Size> listAll() {
String hql = "from size";
Query query = session.createQuery(hql);
return query.list();
}
}
Usando as dicas do How To! 
No teste mesmo, aonde acontece o problema.
Bom, essa é a minha classe teste, nela eu tenho na linha 3 o “private SizeDao sizeDao”, eu substituo, ou adiciono o que você recomendou abaixo dessa linha?!
Isso que eu não consegui entender direito?!
public class SizesControllerTest extends TestCase {
private SizeDao sizeDao;
/**
* @uml.property name="dao"
* @uml.associationEnd multiplicity="(1 1)"
*/
@Test
public void testSave() {
Size size = new Size();
size.setName("Teste");
size.setId(null);
List<Size> lista = sizeDao.listAll();
assertNotNull(size.getName());
for(Size tmp : lista){
System.out.println(tmp.getName());
System.out.println(tmp.getId());
}
sizeDao.save(size);
}
}
antes de você chamar sizeDao.listAll() você precisa inicializar o objeto.
Pode ser logo na linha anterior se preferir.
Voltei, depois de um pouco de batalha eu consegui resolver o problema de NullPointerException. fiz mais ou menos o que você me recomendou Rodrigo:
private SizeDao sizeDao = new SizeDaoImpl();
O erro que aparece agora é outro: junit.framework.AssertionFailedError: Exception in constructor: testSave (java.lang.Error: Unresolved compilation problem: Cannot instantiate the type SizeDaoImpl - at br.com.issx.tipologia.controller.auxiliary.document.SizesControllerTest.(SizesControllerTest.java:16)
Já tentei algumas coisas mas não consegui resolver. 
Aí Hebert, gostaria de parabenizá-lo pelo seu Blog, já vi que vou dedicar algumas horinhas a ele. Tem muito material bom lá.
Obrigado e mais uma vez, parabéns!