Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以为Mockito.mock(Class.Class)设置一些属性吗?_Java_Unit Testing_Testing_Junit_Mockito - Fatal编程技术网

Java 我可以为Mockito.mock(Class.Class)设置一些属性吗?

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

我目前正在使用mockito和JUnit5开发单元测试服务
以下是我的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);
是完全合理的。