所以我不熟悉使用Mockito进行测试,我查阅了一些教程,但了解起来却很慢。 我有一个支持EJB的端点。我想测试中的方法 EJB。我尝试了很多选择,显然我得到了nullpointer异常。 (我知道 空指针异常是)。模拟实体管理器不会持久化对象。所以给我 当我尝试对空列表执行任何操作时,将返回null指针异常。请任何人都可以展示 我该如何解决这个问题,或者让我指向我可以阅读的任何详细文章或教程,以促进学习。谢谢你们。
这是我的ejb。
[merge]
tool = vimdiff
[mergetool "vimdiff"]
cmd = vimdiff $LOCAL $BASE $REMOTE $MERGED -c '$wincmd w | wincmd J'
答案 0 :(得分:0)
为避免NullPointerException,可以尝试在MovieHandlerTest类中添加以下代码:
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.when;
[..]
@Mock
EntityManager manager;
@Mock
TypedQuery<Movie> query;
[..]
@Before
public void setUp() {
final Movie first = new Movie();
first.setName("MISSION IMPOSSIBLE");
first.setAvailableCopies(10);
first.setIsbn("ABC788900");
final Movie second = new Movie();
first.setName("JAMES BOND");
first.setAvailableCopies(10);
first.setIsbn("ABC788999");
final Movie last = new Movie();
first.setName("HARRY POTTER");
first.setAvailableCopies(10);
first.setIsbn("ABC7882000");
when(manager.createQuery(any(String.class), eq(Movie.class))).thenReturn(query);
when(query.setParameter(any(String.class), any(String.class))).thenReturn(query);
when(query.getSingleResult()).thenReturn(first, second, last);
}
但是“ Response.ok(borrow).build()”出现了另一个问题
您有3种解决方案:
对于解决方案2,您可以添加以下Maven依赖项:
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.13</version>
<scope>test</scope>
</dependency>