Java 我可以为Mockito.mock(Class.Class)设置一些属性吗?
我目前正在使用mockito和JUnit5开发单元测试服务Java 我可以为Mockito.mock(Class.Class)设置一些属性吗?,java,unit-testing,testing,junit,mockito,Java,Unit Testing,Testing,Junit,Mockito,我目前正在使用mockito和JUnit5开发单元测试服务 以下是我的ServiceTest.java中有问题的部分: ... archiveMeasure=Mockito.mock(ArchiveMeasure.class); previsionHMeasure=Mockito.mock(PrevisionHMeasure.class); ruleOccupationRate=Mockito.mock(Rule.class); calculateIndicatorService=Mockit
以下是我的ServiceTest.java中有问题的部分:
...
archiveMeasure=Mockito.mock(ArchiveMeasure.class);
previsionHMeasure=Mockito.mock(PrevisionHMeasure.class);
ruleOccupationRate=Mockito.mock(Rule.class);
calculateIndicatorService=Mockito.mock(CalculateIndicatorService.class);
@Test
public void DefiniteSectionThatBecomesDark_returnTrue() {
//Arrange
ruleOccupationRate.setThreshold(25);
archiveMeasure.setOccupationRate(30);
previsionHMeasure.setOccupationRate(30);
boolean expected = true;
//Act
boolean found = definiteSectionStateCongestionService.DefiniteSectionThatBecomesDark(archiveMeasure,previsionHMeasure,ruleOccupationRate);
//Assert
assertEquals(found,expected);
}
测试的服务方法为:
public boolean DefiniteSectionThatBecomesBright ( ArchiveMeasure archiveMeasure,
PrevisionHMeasure previsionHMeasure,
Rule ruleOccupationRate) {
if ( calculateIndicatorsService.calculateActualCongestion(ruleOccupationRate.getThreshold(), archiveMeasure.getOccupationRate())==true ||
previsionHMeasure.getOccupationRate() < ruleOccupationRate.getThreshold()) {
return true;
}
else {
return false;
}
public boolean definitesection变为右侧(ArchiveMeasure ArchiveMeasure,
预防措施预防措施,
规则(职业率){
如果(CalculateIndicatorService.calculateActualCongestion(RuleOccationRate.getThreshold(),archiveMeasure.GetOccationRate())==true | |
previsionHMeasure.getOccupationRate()
我的问题是,当我以RuleOccationRate.getThreshold()的速度运行测试时,我得到了一个NullPointerException。我想我可以通过为服务中涉及的每个getter使用大量when().theReturn()来克服这个困难。因此,我的问题是:为什么我在测试的//Arrange部分使用的setter不起作用?
是否可以将属性设置为mock对象,以避免对getter的每次调用进行模拟?
如果可以,我该如何继续?
ruleocationrate.setThreshold(25)
这不是处理mock的方式。Mockito.when(ruleOccupationRate.getThreshold())。然后返回(25)
这是一个基本的mockito教程。建议您阅读。Ok@Michael所以我绝对需要使用when()。然后返回()对于我正在测试的服务中调用的每一个方法?我还要注意,仅仅因为你正在编写单元测试并不意味着一切都需要模拟。简单的对象仍然可以是真实的。因此new-ruleocationrate()…setThreshold(25);
是完全合理的。