Tag: mockito

是否有可能与Mockito做严格的嘲笑?

我想使用严格的模拟,至少在第一次开发针对旧代码的一些测试时,因此如果我没有专门定义期望,那么在我的模拟上调用的任何方法都会抛出exception。 从我所看到的情况来看,如果我没有定义任何期望,Mockito将只返回null,稍后会在其他地方导致NullPointerException。 有可能吗? 如果有,怎么样?

java.util.MissingResourceException:找不到基本名称javax.servlet.LocalStrings的bundle,locale es_ES

我试图在我的一个servlet中执行一些jUnit测试,但每当我尝试运行它时,我都会获得ExceptionInInitializerError。 我已经读过这个错误是由于在评估静态初始化程序或静态变量的初始化程序期间发生的exception。 问题是即使我试图修复它我也可以。 这就是我在这里写的原因:我的servlet代码如下: public class AppServlet extends HttpServlet { // /** * Handles the HTTP GET method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, […]

如何解决不需要的Stubbingexception

我的代码如下, @RunWith(MockitoJUnitRunner.class) public class MyClass { private static final String code =”Test”; @Mock private MyClassDAO dao; @InjectMocks private MyClassService Service = new MyClassServiceImpl(); @Test public void testDoSearch() throws Exception { final String METHOD_NAME = logger.getName().concat(“.testDoSearchEcRcfInspections()”); CriteriaDTO dto = new CriteriaDTO(); dto.setCode(code); inspectionService.searchEcRcfInspections(dto); List summaryList = new ArrayList(); inspectionsSummaryList.add(dto); when(dao.doSearch(dto)).thenReturn(inspectionsSummaryList);//got error in this line verify(dao).doSearchInspections(dto); } […]

模拟假定存在的私有变量

如果没有在您正在测试的类中创建/初始化模拟对象,它是如何在运行时获取模拟对象的,它不是静态的(单例模式),或者您没有某种类型的测试构造函数可以挂钩? 在我正在编写一些unit testing的类中,我遇到了一个我尚未遇到/解决过的场景。 我有一个JMS资源( QueueConnectionFactory供参考,但它没关系),这是我正在测试的类的私有变量。 由于它具有javax.annotation.Resource注释,因此在运行时它被认为是可用的。 在测试期间,它不是,这就需要模拟这个对象。 它不是一个静态类,并没有以静态方式使用,如果它是我可以轻松地使用我遇到的各种静态模拟方法进行模拟。 由于资源永远不会在本地创建(在构造函数中或甚至在测试构造函数中),因此我无法传入Mock对象,因此在测试的运行时,使用mock而不是实际对象。 如何模拟此资源,以便在测试执行时,它将用于代替我正在测试的类中的私有@Resource对象? 作为参考,代码在QueueConnectionFactory上调用createConnection() ,因为Factory尚未初始化/ QueueConnectionFactory ,所以它会抛出空指针exception。 @Stateless public class Example{ @Resource(name = “jms/exampleQCF”) private QueueConnectionFactory queueFactory; … public void testMe(){ Connection connection = queueFactory.createConnection(); … } }

无法使用Mockito返回Class对象

我正在尝试编写unit testing,为此我正在为Mockito模拟写一个when语句,但我似乎无法让eclipse认识到我的返回值是有效的。 这就是我正在做的事情: Class userClass = User.class; when(methodParameter.getParameterType()).thenReturn(userClass); 返回类型.getParameterType()是Class ,所以我不明白为什么eclipse说, The method thenReturn(Class) in the type OngoingStubbing<Class> is not applicable for the arguments (Class) 。 它提供了投射我的userClass,但这只是使一些乱码的东西eclipse说它需要再次施放(并且不能施放)。 这只是Eclipse的一个问题,还是我做错了什么?

Mockito – 监视真实对象调用原始方法

想象一下以下代码: List list = ….. List spy = spy(list); doThrow(new NullpointerException()).when(spy).get(0); doThrow(….)执行list.get(0) – 这根本没有意义。 我想定义模拟行为,而不是在这里调用方法…..我错过了什么? 编辑:列表由CGLIB装饰。 当我删除CGLIB代理时,Mockito按预期工作。 任何想法在使用CGLIB代理时如何解决这样的问题? 谢谢,Maciej

Powermockvalidation非静态方法中的私有静态方法调用

亲爱的stackoverflow同志,我再次遇到一个问题,让特定的PowerMock / Mockito案例起作用。 问题是,我需要validation私有静态方法的调用,该方法是从公共非静态方法调用的 。 我之前发布的一个类似的示例如何抑制和validation私有静态方法调用? 这是我的代码: class Factory { public String factorObject() throws Exception { String s = “Hello Mary Lou”; checkString(s); return s; } private static void checkString(String s) throws Exception { throw new Exception(); } } 这是我的测试类: @RunWith(PowerMockRunner.class) @PrepareForTest(Factory.class) public class Tests extends TestCase { public void testFactory() throws Exception { Factory […]

如何在Spring Boot中测试组件/ bean

要在Spring Boot应用程序中测试组件/ bean, Spring Boot文档的测试部分提供了大量信息和多种方式: @SpringBootTest @WebMvcTest , @DataJpaTest @SpringBootTest , @WebMvcTest , @DataJpaTest以及许多其他方法。 为什么提供这么多方法? 如何决定赞成的方式? 我应该考虑作为集成测试我的测试类使用Spring Boot测试注释注释,例如@SpringBootTest , @WebMvcTest , @DataJpaTest ? PS:我创建了这个问题,因为我注意到许多开发人员(甚至经验丰富的人)都没有得到使用注释而不是另一个注释的后果。

如何测试调用父类的受保护(不需要)方法的方法?

我陷入了一个非常奇怪的境地。 我有一些我需要测试的特定代码。 这里是: public class A { /* * The real method of real class is so big that I just don’t want to test it. * That’s why I use throwing an exception. */ protected void method(Integer result) { throw new RuntimeException(“Oops!”); } protected T generifiedMethod(String s, T type) { throw new RuntimeException(“Oops!”); } […]

Spring Boot测试中的MockBean注释导致NoUniqueBeanDefinitionException

我在使用@MockBean注释时遇到问题。 文档说MockBean可以替换上下文中的bean,但是我在unit testing中得到NoUniqueBeanDefinitionException。 我看不出如何使用注释。 如果我可以模拟repo,那么显然会有多个bean定义。 我正在按照此处的示例进行操作: https : //spring.io/blog/2016/04/15/testing-improvements-in-spring-boot-1-4 我有一个mongo存储库: public interface MyMongoRepository extends MongoRepository { MyDTO findById(String id); } 泽西岛资源: @Component @Path(“/createMatch”) public class Create { @Context UriInfo uriInfo; @Autowired private MyMongoRepository repository; @POST @Produces(MediaType.APPLICATION_JSON) public Response createMatch(@Context HttpServletResponse response) { MyDTO match = new MyDTO(); match = repository.save(match); URI matchUri = uriInfo.getBaseUriBuilder().path(String.format(“/%s/details”, match.getId())).build(); […]