gpt4 book ai didi

java - 如何使用 JUnit 和 Mockito 返回数组进行单元测试?

转载 作者:行者123 更新时间:2023-12-01 16:29:50 24 4
gpt4 key购买 nike

我正在测试一个应用程序,除非它可以拆分String,否则该应用程序将停止进入String[] 。我正在使用 JUnit 和 Mockito 来测试该应用程序。我设置了默认值和模拟行为,如下所示。


String[] exampleStringList = {"exampleElement", "exampleElement"};
when(example.Call()).thenReturn(exampleStringList);

这会产生错误 java: no suitable method found for thenReturn(java.Util.String[]) 。我尝试通过替换 String[] 来解决该问题与 List<String>然后添加必要的元素。这产生了与上面相同的错误。

TL;博士;我需要返回String[]使用 JUnit 进行测试的元素,但 thenReturn 不兼容。如何使用 JUnit 和 Mockito 返回 String[]数组进行测试?

最佳答案

我试图重现你的场景,

  1. 服务定义

    public interface ExampleService {
    boolean doSomething();

    }

  2. 实现

    @Service
    @RequiredArgsConstructor
    public class ExampleServiceImpl implements ExampleService {
    private final ExampleDependantService exampleDependantService;
    @Override
    public boolean doSomething() {
    String[] strings = exampleDependantService.call();
    if(strings.length >0){
    return true;
    }else{
    return false ;
    }

    }
    }
  3. 依赖关系

      @Component
    public class ExampleDependantService {
    public String[] call(){
    return new String[]{"exampleElement", "exampleElement"};
    }
    }

4.测试

       @ExtendWith(SpringExtension.class)
class ExampleDependantServiceImplTest {
@Mock
private ExampleDependantService exampleDependantService;
@InjectMocks
private ExampleServiceImpl exampleServiceImpl;

@Test
void doSomething_WhenCalled() {
String[] exampleStringList = {"exampleElement", "exampleElement"};
when(exampleDependantService.call()).thenReturn(exampleStringList);
boolean b = exampleServiceImpl.doSomething();
Assert.assertTrue(b);
}
}

5.输出

enter image description here

关于java - 如何使用 JUnit 和 Mockito 返回数组进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62071608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com