草庐IT

java - 在一个匹配器中匹配多个属性

我需要编写Matcher来检查多个属性。对于我使用过的单个属性:importstaticorg.hamcrest.Matchers.equalTo;importstaticorg.hamcrest.Matchers.hasProperty;importorg.hamcrest.Matcher;importorg.hamcrest.Matchers;MatchermatcherName=Matchers.hasProperty("propertyName",equalTo(expectedValue));我应该如何检查一个Matcher中的更多属性? 最佳答案

java - mockito 中@InjectMocks 和@Autowired 用法的区别?

当我使用Mockito和Junit编写测试用例时,我使用了@InjectMocks作为要测试的类。在项目的其他部分,我还看到@Autowired被用于要测试的类。我什么时候可以使用@InjectMocks和@Autowired?当我们尝试将它们与要测试的类一起使用时,两者之间有什么区别? 最佳答案 @InjectMocks是一种Mockito机制,用于将test类中声明的字段注入(inject)到undertest类中的匹配字段中。它不要求被测类是Spring组件。@Autowired是Spring的注释,用于将beanAutowi

java - 使用 Scanner 对用户输入进行 junit 测试

我必须测试一个类中的方法,该方法使用Scanner类接受输入。packagecom.math.calculator;importjava.util.Scanner;publicclassInputOutput{publicStringgetInput(){Scannersc=newScanner(System.in);returnsc.nextLine();}}我想使用JUnit对其进行测试,但不确定如何进行。我尝试使用以下代码,但它不会工作。packagecom.math.calculator;importorg.junit.Test;importstaticorg.junit.As

java - Mockito 在模拟方法的参数上调用方法

我刚开始使用Mockito,我只想做类似的事情:publicclassTest{publicvoidclearList(Listl){doVeryLOOOONGDatabaseCallll();l.clear();return;}}///...Testtest=mock(Test.class);Mockito.when(test.clearList(any(List.class))).then(l=>l.clear());有一些技巧吗?感谢您的帮助! 最佳答案 应该这样做(未测试):doAnswer(newAnswer(){publ

java - 在同一个对象上多次调用 Mockito.when?

当尝试将Mockito与Spring一起使用时,通过bean声明创建Mock对象......我在多次调用Mockito.when而不重置Mock对象时发现了一些奇怪的行为,例如:Mockito.when(this.accountMapper.createBadGrammarException()).thenThrow(newBadSqlGrammarException("Bla",null,newSQLException()));一旦在测试期间(在同一个模拟上)多次调用此代码(“Mockito.when”),测试就会失败并出现错误(BadSqlGrammerException,即使此异

java - 测试是否调用了另一个方法

所以我确定那里有类似的东西,但我已经搜索了一个小时,但没有找到我要找的东西。假设我有一个看起来像这样的类:publicclassMyClass{publicvoidmyMethod(booleanshouldCallOtherMethod){if(shouldCallOtherMethod){otherMethod();}}publicvoidotherMethod(){System.out.println("Called");}}如何使这样的东西起作用?@TestpublicvoidshouldCallMethod(){MyClassmyClass=newMyClass();myCl

java - Mockito when().thenReturn() 不能正常工作

我有一个具有2个函数的A类:函数a()返回一个随机数。调用a()并返回返回值的函数b()。在测试中我写了这个:Atest=Mockito.mock(A.class)Mockito.when(test.a()).thenReturn(35)assertEquals(35,test.a())assertEquals(35,test.b())测试在第二个断言处失败。有谁知道为什么吗?要清楚-这不是我的真实代码,而是解释我的问题的简单代码 最佳答案 由于A类是模拟的,所有方法调用都不会转到实际对象。这就是你的第二个断言失败的原因(我猜它可能

java - 如何避免上课自用

我有以下类(class):publicclassMyClass{publicvoiddeleteOrganization(Organizationorganization){/*Deleteorganization*//*Deleterelatedusers*/for(Useruser:organization.getUsers()){deleteUser(user);}}publicvoiddeleteUser(Useruser){/*Deleteuserlogic*/}}此类表示一种自用,因为其公共(public)方法deleteOrganization使用其其他公共(public

java - 在 Mockito 中,当顺序很重要时,验证同一方法的两次调用与中间的另一个方法调用

我认为这会起作用:InOrderinOrder=newInOrder(mock);inOrder.verify(mock).method1();inOrder.verify(mock).method2();inOrder.verify(mock).method1();...但是Mockito说不希望调用mock.method1()。想要1次,但被2次。我将代码更改为:inOrder.verify(times(2),mock).method1();inOrder.verify(mock).method2();它应该可以工作,但现在我没有测试我一开始想测试的东西。有人可以指出我做错了什么,

java - 如何模拟私有(private) dao 变量?

我有一个dao.create()调用,我想在测试方法时对其进行模拟。但是我还是遗漏了一些东西,因为我仍然在接受NPE。这里有什么问题?classMyService{@InjectprivateDaodao;publicvoidmyMethod(){//..dao.create(object);//}}如何模拟dao.create()调用?@RunWith(PowerMockRunner.class)@PrepareForTest(DAO.class)publicvoidMyServiceTest{@TestpublicvoidtestMyMethod(){PowerMockito.mo