当前位置: 首页 > 知识库问答 >
问题:

用于DAO JUnit测试的SpringBootTest

席俊达
2023-03-14
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class EntityDaoTest {

    @Autowired 
    protected EntityDao entityDao;

    @Before
    public void setup()
    {

    }

    @Test
    public void test() throws InternalServerException
    {
        List<Entity> entities = entityDao.list();
        assert(entities.size()==0);
    }
}

DAO类的相关方面如下

@Repository
public class EntityDao extends GenericDao<Entity>{

    public EntityDao(DataSource dataSource) {/.../}
}

我的src/test/resources/application.properties文件如下所示

# Database
spring.datasource.url=jdbc:mysql://localhost:3306/db
spring.datasource.username=dbuser
spring.datasource.password=dbpass

在Eclipse中作为JUnit测试运行的跟踪

java.lang.IllegalStateException: Failed to load ApplicationContext
...
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'entityController': Unsatisfied dependency expressed through field 'entityDao': Error creating bean with name 'entityDao' defined in file .../target/classes/hitstpa/dao/EntityDao.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type [javax.sql.DataSource] found for dependency [javax.sql.DataSource]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; 

...
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'entityDao' defined in file [/home/fmason/workspace/hitstpa/target/classes/hitstpa/dao/EntityDao.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type [javax.sql.DataSource] found for dependency [javax.sql.DataSource]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.sql.DataSource] found for dependency [javax.sql.DataSource]: expected at least 1 bean which qualifies as autowire candidate for this dependency. ...`

应用程序结构

-SRC

----application.java

----COM

----Hitstpa

----application.properties

--测试

---爪哇

共有1个答案

邓子濯
2023-03-14

首先,对于集成测试,您需要一个包含一些固定数据的集成数据库。

  • 现在需要创建一个配置类,它将创建集成测试特定的依赖项(我将其命名为dbconfig.java)
  • 接下来是向集成测试类添加@contextconfiguration注释,并提供dbconfig.java,以便在测试运行时创建datasource依赖项并将其注入容器

示例代码

    @Configuration
    public class DbConfig {

    @Bean
    public DataSource dataSource() {

        //Create the DataSource with integration-DB properties

        return dataSource;
    }
}

    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringBootTest
    @ContextConfiguration(classes=DbConfig.class)
    public class EntityDaoTest {

    }
 类似资料:
  • 问题内容: 我正在尝试为自定义方面编写Junit测试。这是Aspect类代码片段: 因此,只要关节点与切入点匹配,上述方面就会截获。它的工作正常。 但是我的问题是如何对该类进行单元测试。我有以下Junit测试: 因此,我在Junit中匹配切入点时被其拦截。但是,当调用该联合点时,我应该如何确定(可能是通过断言)我正在拦截? 我不能断言返回值,因为它除了执行联合点外没有其他特殊之处。因此,无论是按方

  • 问题内容: 我在一个项目中工作,我们必须为我们所有的简单bean(POJO)创建单元测试。如果POJO由getter和setter组成,那么是否有必要为其创建单元测试?假设POJO大约100%的时间都可以正常工作吗? 问题答案: TDD中的规则是“测试所有可能破坏的东西” 吸气剂可以破坏吗?通常不会,因此我不必费心测试。此外,我的代码 做 测试肯定会调用吸气所以它 会 被测试。 我个人的规则是,我

  • 我有一个方法如下。 我想为下面的方法写两个测试用例。 1) 提交数据的成功事务 2) 具有回滚数据的失败事务 我如何写一个涉及事务的测试用例,并成功和失败?

  • 问题内容: 我需要为设计欠佳的旧应用程序编写JUnit测试,并且正在向标准输出中写入许多错误消息。当方法正确运行时,它将返回XML响应: 但是,当XML格式错误或无法理解请求时,它将返回并将某些内容写入标准输出。 有什么方法可以在JUnit中声明控制台输出?要捕获类似的情况: 问题答案: 使用和很简单: 样本测试案例: 我使用此代码测试了命令行选项(断言-version输出版本字符串等)

  • 我在我的应用程序中使用Stripe。我想编写一个支付联调,检查Stripe是否已创建付款。我正在使用Stripe.js. 在我的测试中,我需要一个卡令牌来执行测试费用。通常,此令牌将在客户端生成条带.js并在请求中发送以执行收费。由于这是仅服务器端测试,是否有某种方法可以从测试中生成令牌? 作为参考,测试内容如下(使用php,但原理相同): 本质上,我在问Stripe API中是否有允许服务器端令

  • 问题内容: 我对仅测试客户端Java应用程序的UI感兴趣。最受欢迎的框架是什么?您推荐的框架是什么?另外,Selenium为什么不这样做(或这样做)?在我看来,任何可以测试Web应用程序的东西都应该能够测试Windows应用程序。 问题答案: 尝试FEST框架。如果我没记错的话,这就是以前称为Abbot的东西。我使用它进行自动化测试,它看起来非常简单和方便。简单的事情变得容易,而复杂的事情并不是火