gpt4 book ai didi

java - 在 TestNG 单元测试中初始化 Autowiring 对象

转载 作者:行者123 更新时间:2023-12-01 09:38:00 24 4
gpt4 key购买 nike

这是我的代码:

@Service("MyCode")
public class CodeImpl implements CodeI {

@Autowired
private CodeMapper codeMapper;

@Autowired
private CodeAppService codeAppService;

@Override
public CodePOJO getCode(String myId) {
CodeDTO codeDTO = codeAppService.getOne(myId);
return codeMapper.mapCode(codeDTO);
}

}

这是我编写的单元测试:

public class CodeImplTest {

@Tested(fullyInitialized = true)
CodeImpl codeImpl;

@Injectable
CodeAppService mockedCodeAppService;

@Injectable
CodeMapper mockedCodeMapper;

@BeforeMethod
public void setup_mocks() {
codeImpl = new CodeImpl();
}

@Test
public void testGetCode() throws Exception {

final CodeDTO codeDTO = new codeDTO();
codeDTO.setName("my name")

new NonStrictExpectations() {{
mockedCodeAppService.getOne(anyString);
result = codeDTO;
}};

CodePOJO returnedCodePOJO = codeImpl.getCode("1");
assertThat(returnedCodePOJO, is(instanceOf(CodePOJO.class)));
assertThat(returnedCodePOJO.getName(), is("my name"));
}

}

我收到以下未初始化的异常:

  java.lang.AssertionError: 
Expected: is "my name"
but: was null

at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:8)
at com.dev.impl.CodeImplTest.testGetCode(CodeImplTest.java:74)

我尝试在论坛上搜索它,但找不到任何答案。

任何帮助将不胜感激。

谢谢。

最佳答案

您仅为 codeAppService.getOne() 准备了行为,但在您的代码中,该调用的结果随后会传递给 codeMapper.mapCode()

我会尝试:

new NonStrictExpectations() {{
mockedCodeAppService.getOne(anyString);
result = codeDTO;
mockedCodeMapper.mapCode(codeDTO);
result = codeDTO;
}};

关于java - 在 TestNG 单元测试中初始化 Autowiring 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38686758/

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