title: JUnit throws java.lang.NullPointerException when testing with JPA
body: <p>I'm trying to run a JUnit test for my simple java program that uses JPA and I always get the following error:</p>
  
  <pre><code>Testcase: testGetSummary(logic.rezepteVerwaltenTest):   Caused an ERROR
  null
  java.lang.NullPointerException
      at logic.rezepteVerwalten.getSummary(rezepteVerwalten.java:41)
      at logic.rezepteVerwaltenTest.testGetSummary(rezepteVerwaltenTest.java:56)
  </code></pre>
  
  <p>I have two questions:</p>
  
  <ul>
  <li>where lies the problem? (obvious question, wasn't it :-))</li>
  <li>how do I get a more detailed stack trace from the JUnit test</li>
  </ul>
  
  <p>BTW: it works very well if I call the methods via JSF.</p>
  
  <p>I would appreciate any help! Thank you!</p>
  
  <p>The JUnit Test:</p>
  
  <pre><code>package logic;
  
  import org.junit.After;
  import org.junit.AfterClass;
  import org.junit.Before;
  import org.junit.BeforeClass;
  import org.junit.*;
  import javax.ejb.EJB;
  
  public class rezepteVerwaltenTest {
  
  
  @EJB
  private rezepteVerwalten rezepte = new rezepteVerwalten();
  
  
  
  public rezepteVerwaltenTest() {
  }
  
  @BeforeClass
  public static void setUpClass() {
  
  
  }
  
  @AfterClass
  public static void tearDownClass() {
  }
  
  @Before
  public void setUp() {
  
  }
  
  @After
  public void tearDown() {
  
  }
  
  /**
   * Test of getSummary method, of class rezepteVerwalten.
   */
  @Test
  public void testGetSummary() {
      System.out.println("getSummary");
      rezepte.getSummary();
  
      assert(true);
  }
  }
  </code></pre>
  
  <p>The class:</p>
  
  <pre><code>package logic;
  
  import javax.ejb.Stateless;
  import entity.rezepte;
  import facades.*;
  import helper.Calculate;
  import interfaces.Logger;
  import java.util.ArrayList;
  import java.util.List;
  import javax.ejb.EJB;
  import javax.faces.bean.ManagedBean;
  import javax.faces.bean.RequestScoped;
  import logic.RezepteLogger;
  
  @ManagedBean(name = "rezepteVerwalten")
  @RequestScoped
  public class rezepteVerwalten {
  
      @EJB
      private rezepteFacade rezepteFacade;
      @EJB
      private Logger logger;
  
      private String name;
      private String zubereitung;
      private String summary;
  
  
      public String getSummary() {
          List&lt;rezepte&gt; rezepte = rezepteFacade.findAll();
          List&lt;String&gt; rez = new ArrayList&lt;String&gt;();
  
          for (int i = 0; i&lt;rezepte.size();i++) {
              String output = rezepte.get(i).toString()+" "+ rezepte.get(i).getRezeptName()+": "+rezepte.get(i).getRezeptZubereitung();      
              rez.add(output);
          }
          return rez.toString();
      }
  
      public String getName() {
          return name;
      }
  
      public void setName(String name) {
          this.name = name;
      }
  
      public String getZubereitung() {
          return zubereitung;
      }
  
      public void setZubereitung(String zubereitung) {
          this.zubereitung = zubereitung;
      }
  
  
      public void rezepteVerwalten() {
          this.name ="";
          this.zubereitung="";
      }
  
      public void rezepteVerwalten(String name, String zubereitung) {
          this.name = name;
          this.zubereitung = zubereitung;
      }
  
      public String createRezept() {
  
  
            rezepte rezept = new rezepte();
  
            rezept.setRezeptName(name);
            rezept.setRezeptZubereitung(zubereitung);
  
            rezepteFacade.create(rezept);
  
            return "theend";
      }
  
      public void listRezepte() {
  
  
          List&lt;rezepte&gt; rezepte = rezepteFacade.findAll();
          List&lt;String&gt; rez = new ArrayList&lt;String&gt;();
  
          for (int i = 0; i&lt;rezepte.size();i++) {
              String output = rezepte.get(i).toString()+" "+ rezepte.get(i).getRezeptName()+": "+rezepte.get(i).getRezeptZubereitung();
  
              rez.add(output);
  
              logger.logIt(output);
              logger.logIt(Calculate.calculateMenge(2, i+1, 5).toString());
  
          }
  
      }
  
  
  }
  </code></pre>
  
  <p>The entity:</p>
  
  <pre><code>package entity;
  
  import java.io.Serializable;
  import javax.persistence.Entity;
  import javax.persistence.GeneratedValue;
  import javax.persistence.GenerationType;
  import javax.persistence.Id;
  
  
  @Entity
  public class rezepte implements Serializable {
      private static final long serialVersionUID = 1L;
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private Long id;
  
      private String rezeptName;
      private String rezeptZubereitung;
  
  
      public String getRezeptName() {
          return rezeptName;
      }
  
      public void setRezeptName(String rezeptName) {
          this.rezeptName = rezeptName;
      }
  
      public String getRezeptZubereitung() {
          return rezeptZubereitung;
      }
  
      public void setRezeptZubereitung(String rezeptZubereitung) {
          this.rezeptZubereitung = rezeptZubereitung;
      }
  
  
  
      public Long getId() {
          return id;
      }
  
      public void setId(Long id) {
          this.id = id;
      }
  
      @Override
      public int hashCode() {
          int hash = 0;
          hash += (id != null ? id.hashCode() : 0);
          return hash;
      }
  
      @Override
      public boolean equals(Object object) {
          // TODO: Warning - this method won't work in the case the id fields are not set
          if (!(object instanceof rezepte)) {
              return false;
          }
          rezepte other = (rezepte) object;
          if ((this.id == null &amp;&amp; other.id != null) || (this.id != null &amp;&amp; !this.id.equals(other.id))) {
              return false;
          }
          return true;
      }
  
      @Override
      public String toString() {
          return "entity.rezepte[ id=" + id + " ]";
      }
  
  }
  </code></pre>
  
  <p>And the facades:</p>
  
  <pre><code>package facades;
  
  import entity.rezepte;
  import javax.ejb.Stateless;
  import javax.persistence.EntityManager;
  import javax.persistence.PersistenceContext;
  
  
  @Stateless
  public class rezepteFacade extends AbstractFacade&lt;rezepte&gt; {
      @PersistenceContext(unitName = "RezeptePU")
      private EntityManager em;
  
      @Override
      protected EntityManager getEntityManager() {
          return em;
      }
  
      public rezepteFacade() {
          super(rezepte.class);
      }
  
  }
  
  
  package facades;
  
  import java.util.List;
  import javax.persistence.EntityManager;
  
  
  public abstract class AbstractFacade&lt;T&gt; {
      private Class&lt;T&gt; entityClass;
  
      public AbstractFacade(Class&lt;T&gt; entityClass) {
          this.entityClass = entityClass;
      }
  
      protected abstract EntityManager getEntityManager();
  
      public void create(T entity) {
          getEntityManager().persist(entity);
      }
  
      public void edit(T entity) {
          getEntityManager().merge(entity);
      }
  
      public void remove(T entity) {
          getEntityManager().remove(getEntityManager().merge(entity));
      }
  
      public T find(Object id) {
          return getEntityManager().find(entityClass, id);
      }
  
      public List&lt;T&gt; findAll() {
          javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
          cq.select(cq.from(entityClass));
          return getEntityManager().createQuery(cq).getResultList();
      }
  
      public List&lt;T&gt; findRange(int[] range) {
          javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
          cq.select(cq.from(entityClass));
          javax.persistence.Query q = getEntityManager().createQuery(cq);
          q.setMaxResults(range[1] - range[0]);
          q.setFirstResult(range[0]);
          return q.getResultList();
      }
  
      public int count() {
          javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
          javax.persistence.criteria.Root&lt;T&gt; rt = cq.from(entityClass);
          cq.select(getEntityManager().getCriteriaBuilder().count(rt));
          javax.persistence.Query q = getEntityManager().createQuery(cq);
          return ((Long) q.getSingleResult()).intValue();
      }
  
  }
  </code></pre>