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

在不同的项目中使用多个Spring上下文运行JUnit测试

严宇
2023-03-14

我有一个通用代码库,需要用不同的实现和运行时配置进行测试。考虑使用多个DAO实现的服务。我有测试Dao接口的通用单元测试(需要Dao自动连接),我想从不同的项目中调用这些测试。

基本上我想要这样的东西。在共享的通用项目中,我的测试将有效。所以本质上,在共享项目中,我有我的测试,例如。

public class ApiTest {

@Autowired
DaoBase myDao;

    @Test
    public void testSomething(){
    }
}

然后在实现Dao的其他项目中,我会:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { ImplementationConfigA.class })
public class ImplemtationTesterA {

  //somehow invoke ApiTest.class?
}

.

@Configuration
public class ImplementationConfigA{
    @Bean 
    DaoBase daoBase {
        return new DaoImplementationGraphDB(); 
    }
}

同样,有多个项目以不同的方式实现DAO层,我想分享通用测试。

如果我能将@RunWith(SpringJUnit4ClassRunner.class)和@RunWith(Suite.class)结合起来,这正是我想要的,但这似乎是不可能的。i、 e.这实际上是我想要的,这是不可能的:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { ImplementationConfigA.class })
@RunWith(Suite.class)
@Suite.SuiteClasses({   ApiTest.class })
public class ImplemtationTesterA {
...

一定有办法让这样的东西起作用。。有什么想法吗?谢谢

共有2个答案

贺跃
2023-03-14

只是为了更新:我结束了将所有共享测试放置在一个项目中,然后在每个DAO实现项目中创建一个“虚拟”测试类来扩展每个共享测试类。不如定义一个套件方便,因为每个测试类都必须在每个实现项目中复制,但它有效。

因此,在最初的示例中,唯一需要的更改是使实例化TesterA扩展ApiTest。

管和志
2023-03-14

使用配置文件

@Configuration
@Profile("profileA")
public class ImplementationConfigA{
    @Bean 
    DaoBase daoBase {
        return new DaoImplementationGraphDB(); 
    }
}

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { ImplementationConfigA.class })
@RunWith(Suite.class)
@Suite.SuiteClasses({   ApiTest.class })
@ActiveProfiles("profileA");
public class ImplemtationTesterA {
...
 类似资料:
  • 本文向大家介绍在Spring boot的项目中使用Junit进行单体测试,包括了在Spring boot的项目中使用Junit进行单体测试的使用技巧和注意事项,需要的朋友参考一下 使用Junit或者TestNG可以进行单体测试,这篇文章简单说明一下如何在Spring boot的项目中使用Junit进行单体测试。 pom设定 pom中需要添加spring-boot-starter-test 确认依赖

  • 问题内容: 有没有办法告诉JUnit在继续下一个测试用例之前,用不同的数据连续运行一个特定的测试用例多次? 问题答案: 看看junit 4.4的理论:

  • 我希望这个场景有点让我困惑。我想运行一些测试用例使用jUnit或testng与不同的数据集从csv文件。下面给出了我尝试过的代码片段,但它仍然有效, 我的问题是,我需要在不同的测试用例中使用来自每一列的数据,如果csv文件中有多行,我需要再次迭代所有测试用例。我尝试过使用理论和数据点,但它的工作方式是,第一个案例使用csv文件中的所有行运行,它移动到下一个测试案例,然后使用csv文件中的所有行再次

  • 问题内容: 我是批处理文件的新手。我有两个项目,我想使用批处理文件运行它们。projectA应该在端口8081上运行,而projectB应该在8082上运行。我尝试了以下两种方法,但是只有projectA在端口8081上启动。 似乎没有阅读以下部分。 我也尝试创建2个批处理文件:master.bat和slave.bat。 master.bat包含以下内容,并正在调用slave.bat: slave

  • 我有3个maven项目。项目1,项目2 为此,我在项目2 pom.xml文件中添加了这个 我的pom。Project3的xml是- 在项目3中,我添加了testng。xml文件来运行测试。现在如果我运行这个测试。xml文件,那么我所有的测试用例都成功运行了。如果我尝试使用maven测试运行测试用例,那么它会失败。 我已经在下面的pom文件中包含了testng.xml文件,以便使用maven运行te

  • 我有一个Spring Boot项目,其中定义了几个apiendpoint。我目前正在为每个API编写集成测试。我的测试类注释如下。 现在,对于我的每个测试类,都会设置一个新的上下文来执行它们,这需要时间。我更喜欢将每个apiendpoint的测试用例保存在单独的类中,以便在逻辑上组织它们,但我不希望每次添加新的控制器类和相应的测试类时,我的测试执行时间都会猛增。我在这里做错了什么?