@RunWith(SpringRunner.class)
//@SpringBootTest
@WebMvcTest(TokenServiceImpl.class)
public class TokenTest {
@Test
public void getOauthToken()
{
System.out.println( " done test");
}
public class TokenServiceImpl implements TokenService{
public String getToken() throws RuntimeException{
return " Token returned" ;
}
我得到以下错误:-snippet
2019-11-27 19:12:45.884警告15864-[main]O.s.w.cs.GenericWebApplicationContext:上下文初始化期间遇到异常-取消刷新尝试:org.springframework.beans.factory.unsatisfieddependencyException:创建名为“run application”的bean时出错:通过字段“job”表示的不满足的依赖关系;嵌套异常为org.springframework.beans.factory.unsatisfieddependencyException:创建类路径资源[com/mycompany/project1/batch/configurations/batchbdrentityconfig.class]中定义的名称为'job'的bean时出错:通过方法'job'参数4表示的不满足的依赖关系;嵌套异常为org.springframework.beans.factory.unsatisfieddependencyexception:创建名为“batch dbwriter”的bean时出错:通过字段“bdrEntityRepository”表示的不满足依赖项;嵌套异常为org.springframework.beans.factory.noSuchBeanDefinitionException:没有“com.mycompany.project1.batch.repositories.bdrEntityRepository”类型的合格bean可用:应至少有一个合格的自带候选bean。依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true)}
com.mycompany.project1.batch.services.batchdbwriter中得字段BDREntityRepository需要类型为“com.mycompany.project1.batch.repositories.BDREntityRepository”得bean,但找不到该bean.
考虑在您的配置中定义一个类型为“com.mycompany.project1.batch.repositories.bdrEntityRepository”的bean。
原因:org.springframework.beans.factory.unsatisfieddependencyexception:创建名为“run application”的bean时出错:通过字段“job”表示的不满足的依赖关系;嵌套异常为org.springframework.beans.factory.unsatisfieddependencyException:创建类路径资源[com/mycompany/project1/batch/configurations/batchbdrentityconfig.class]中定义的名称为'job'的bean时出错:通过方法'job'参数4表示的不满足的依赖关系;嵌套异常为org.springframework.beans.factory.unsatisfieddependencyexception:创建名为“batch dbwriter”的bean时出错:通过字段“bdrEntityRepository”表示的不满足依赖项;嵌套异常为org.springframework.beans.factory.noSuchBeanDefinitionException:没有“com.mycompany.project1.batch.repositories.bdrEntityRepository”类型的合格bean可用:应至少有一个合格的自带候选bean。依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true)}
原因:org.springframework.beans.factory.unsatisfieddependencyexception:创建名为“batch dbwriter”的bean时出错:通过字段“bdrEntityRepository”表示的不满足依赖项;嵌套异常为org.springframework.beans.factory.noSuchBeanDefinitionException:没有“com.mycompany.project1.batch.repositories.bdrEntityRepository”类型的合格bean可用:应至少有一个合格的自带候选bean。依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true)}
原因:org.springframework.beans.factory.noSuchBeanDefinitionException:没有“com.mycompany.project1.batch.repositories.bdrEntityRepository”类型的合格bean可用:应至少有一个合格的自带候选bean。依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true)}
我的主要方法如下
@SpringBootApplication
@ComponentScan(basePackages= {"com.mycompany.project1"})
public class RunApplication{
private static final Logger logger = Logger.getLogger(BatchController.class);
@Autowired
JobLauncher jobLauncher;
@Autowired
Job job;
/*
* jmxBean will get loaded when this managed bean is called from RMI, and it will fire batch execution
*/
public static void main(String[] args){
ApplicationContext app = SpringApplication.run(RunApplication.class, args);
logger.debug("Batch Application has been started...");
BatchController controller = app.getBean(BatchController.class);
//Start batch process when application starts or restart, its optional call and can be commented out
//as we have JMX to expose load method on demand
//BatchController batch = new BatchController();
controller.startBatchProessFromMain();
}
}
@Component
public class BatchDBWriter implements ItemWriter<BDREntity> {
private static final Logger logger = Logger.getLogger(BatchDBWriter.class);
@Autowired
private BDREntityRepository bDREntityRepository;
/*
* this method call the JPArepository's saveAll
* function and saves all the list of bdrEntitiesat a time.
*/
@Override
public void write(List<? extends BDREntity> bdrEntities) throws Exception {
bDREntityRepository.saveAll(bdrEntities);
}
}
我如何修复我的Junit?
您正在使用@webmvctest
这是一个测试切片注释。它专门用于测试应用程序中与WebMVC相关的组件,是集成测试的一种形式。
您在评论中说,您没有尝试对应用程序进行集成测试。在这种情况下,您不应该使用@springboottest
或Spring boot提供的任何其他@…test
注释。
假设您的目标是对TokenServiceImpl
进行单元测试,我希望您的测试类看起来如下所示:
public class TokenTest {
private final TokenServiceImpl tokenService = new TokenServiceImpl();
@Test
public void getOauthToken() {
String token = this.tokenService.getToken();
// Assertions to check the token go here
}
}
我正在使用JUnit自动化功能测试。我遇到了一个问题:如果我遵循规则“每个测试方法一个(重要的)断言”,那么每个测试用例最终会有一堆6行测试方法(17个是迄今为止最大的数字)。如果我将它们全部放入一个测试方法中,我必须注释掉失败的断言,否则一半的测试永远不会启动。 我不喜欢第一种方式,因为它启动浏览器的次数太多,而且浏览器启动登录/注销似乎比测试运行本身更“昂贵”和耗时。 第二种方法也不好,因为它
我试图使用Junit5为特定的服务类创建单元/集成测试,以避免整个项目过载。 测试类: 错误: 2019-04-03 14:56:06.146警告732---[main]O.S.W.C.S.GenericWebApplicationContext:上下文初始化过程中遇到异常-取消刷新尝试:org.springframework.beans.factory.unsatisfiedDependency
JUnit 5中是否有任何机制可以在测试中运行所有assert,即使中间的assert失败?例如: 我的意图是运行所有断言,并跟踪失败的只是第二个,而不是第三个和第一个。
在使用JUnit进行测试时,我无法理解一些事情,我编写了一些测试,而有些测试似乎可以简单地使用 而且 有些似乎不能与它们一起工作,所以我必须使用 而且 我理解@mockbean是在处理spring容器时使用的,而@mock只是用来复制/模拟某个类及其方法。但是什么时候才是使用@mockbean的最佳时机呢? 上面是我在spring boot应用程序中为一个控制器编写的测试,但当我使用@mock模拟
本文向大家介绍详解springboot中junit回滚,包括了详解springboot中junit回滚的使用技巧和注意事项,需要的朋友参考一下 springboot中使用junit编写单元测试,并且测试结果不影响数据库。 pom引入依赖 如果是IDE生成的项目,该包已经默认引入。 数据库原始数据 原始数据 编写单元测试 结果数据 结果数据 结论 可以看出code=001001的数据没有更改,而co
问题内容: 今天,我看到了一个带有Java断言而不是JUnit断言的JUnit测试用例-相对于另一个而言,优先选择一个优点还是缺点? 问题答案: 在JUnit4中,JUnit断言引发的异常(实际上是Error)与java 关键字(AssertionError)引发的错误相同,因此它与堆栈跟踪完全相同,除了您无法分辨出其区别。 话虽这么说,断言必须在JVM中使用特殊标志运行,导致许多测试似乎通过了,