我想问一下你的知识。一个Spring启动应用程序包含各种映射器。这些应该进行测试。要测试映射器,应该读取一个JSON文件。这个JSON文件加载在每个测试文件中。到目前为止,该功能已在每个测试类中实现,我想将功能外包给一个助手类。我尝试如下:
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = {ObjectMapperConfig.class})
public class ResourceHelper {
/**
* Bean to de/serialize jsons.
*/
@Autowired
private ObjectMapper objectMapper;
/**
* Path to the file that will be used as input data.
*/
@Value("classpath:productInputs/soundRecording.json")
private Resource productInputInputFile;
/**
* Method to read a resource and convert it into a desired object.
*
* @param clazz Class of the desired object.
* @param <T> Type of the desired object.
* @return The desired object.
* @throws IOException Thrown if there is a problem accessing the url.
*/
public <T> T getSoundRecordingResource(final Class<T> clazz) throws IOException {
final String productClaimString = IOUtils.toString(productInputInputFile.getURL(), AppConstants.ENCODING);
return objectMapper.readValue(productClaimString, clazz);
}
}
在测试类中,我调用助手如下:
@Autowired
private ResourceHelper resourceHelper;
....
final ProductClaim productClaim = resourceHelper.getSoundRecordingResource(ProductClaim.class);
很遗憾,我收到以下错误消息:
组织。springframework。豆。工厂UnsatifiedDependencyException:创建名为“a.package”的bean时出错。路径CreditMapperTest:通过字段“resourceHelper”表示的未满足的依赖关系;嵌套异常为org。springframework。豆。工厂NoSuchBeanDefinitionException:没有类型为“a.package”的合格bean。路径ResourceHelper可用:至少需要1个符合autowire候选条件的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(必需=true)}
你在这方面有什么经验?我一般说错了吗?
经过几次尝试,我找到了一个可行的解决方案,如果不是完美的话。我将ResourceHelper的注释替换为“@Component”。我在每个想要使用ResourceHelper的测试类中进行ResourceHelper和ObjectMapper的上下文配置。在我看来,这不是一个好的解决方案,但至少我可以避免代码重复。如果将来有人有类似的问题并找到更好的解决方案,欢迎他在这篇文章中发表。
尝试在ResourceHelper上添加anotation@服务。这只是我的猜测。
问题内容: 我是第一次使用JUnit进行Java测试。我必须使用Java,并且想使用单元测试。 我的问题是:我有一个带有一些抽象方法的抽象类。但是有些方法不是抽象的。如何使用JUnit测试此类?示例代码(非常简单): 我要测试并运行。 在“JUnit常见问题解答”部分中,我找到了此链接,但我不理解作者想在此示例中说些什么。这行代码是什么意思? 问题答案: 如果您没有该类的具体实现,并且方法不是测试
我试图使用spring和mockito对rest控制器进行单元测试。这是我的主控制器方法。 这是我的JUnit测试: 在输出响应中,测试失败,因为它得到404错误,但它预期成功代码为200。我相信我已经正确设置了独立配置,我会做错什么。为什么URI没有正确映射到方法?请注意,对于来自应用程序前端的相同URI,它工作正常。以下是我使用Postman工具为chrome测试的正确200响应的完整URI:
"JUnit Helper" 是一个 Eclipse 的 JUnit 单元测试助手插件,可在保存代码时生成测试案例。 Eclipse Update URL: http://junithelper.org/eclipse/plugins/site.xml
问题内容: 我试过了: 但是,CRaSSHD仍会启动。尽管目前它不会损害测试,但我想在单元测试期间禁用不必要的模块,以加快速度并避免潜在的冲突。 问题答案: 最佳答案并不指向更简单,更灵活的解决方案。 只是放置一个 测试类上方的注释。这意味着其他测试不受当前测试的特殊情况的影响。如果存在影响大多数测试的配置,请考虑使用spring配置文件代替当前的最佳答案。 感谢@skirsch鼓励我将其从评论升
我试过: 然而,混乱仍然开始。虽然目前它并不损害测试,但我希望在单元测试期间禁用不必要的模块,以加快速度并避免潜在的冲突。
问题内容: 我有一堆JUnit测试用例(集成测试),它们在逻辑上分为不同的测试类。 我们能够为每个测试类加载一次Spring应用程序上下文,然后将其重新用于JUnit测试类中的所有测试用例 但是,我们只是想知道是否有一种方法可以对一堆JUnit测试类仅加载一次Spring应用程序上下文。 FWIW,我们使用Spring 3.0.5,JUnit 4.5并使用Maven构建项目。 问题答案: 是的,这