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

使用spring概要文件时将bean自动导入TestNG测试的问题

裴兴言
2023-03-14

我目前正在完善我们的测试框架。对于当前的需求,我们必须支持多个spring概要文件,并多次运行测试,每次使用不同的概要文件。每个概要文件针对不同的测试环境,因此可以执行具有不同逻辑的不同测试集。

我正在进行这样一个测试类:

@ContextConfiguration(locations = { "classpath:META-INF/test-context.xml" })
public class Test extends AbstractTestNGSpringContextTests {
    @Autowired
    ProfileSpeciticBean profileSpecificBean;

    ...
}

这里,ProfileSpecificBean是一个接口,由单独的类实现。要注入的实际实现由活动的Spring概要文件决定,我使用的是Spring XML上下文。我使用-dspring.profiles.active=profilename命令用Maven构建项目,因此期望测试捕获传递的概要文件。

但是,当前测试失败,在完整的StackTrace中出现此错误:

org.springframework.beans.factory.nosuchBeanDefinitionException:未找到用于依赖项的ProfileSpeciticBean类型的合格bean:预期至少有1个合格为autowire candindate的bean,找到0

在对此主题进行了一些深入研究之后,我发现AbstractTestNgSpringContextTests需要在测试类之上添加@ActiveProfiles注释。因此,这段代码的工作原理是:

 @ContextConfiguration(locations = { "classpath:META-INF/test-context.xml" })
 @ActiveProfiles("profile1")
 public class Test extends AbstractTestNGSpringContextTests ...

这样做的问题是:我想避免在我的类中硬编码配置文件名。我只需要修改命令行脚本,就可以为不同的配置文件运行相同的测试类。

上述可能吗?有什么方法可以让TestNG知道命令行概要文件,并重用相同的测试吗?为了使测试运行,我需要避免重复代码和配置,所以为每个概要文件创建两个测试类并不是我想要的。

共有1个答案

何禄
2023-03-14

尝试以下方法为Junit单元测试设置JVM参数?为实际运行测试的VM设置系统变量-它与运行Maven的VM不同。

在那里设置你的个人资料。

您可以使用maven系统参数通过调用maven(或使用maven概要文件)来设置该参数。

 类似资料:
  • 下面是我的spring项目中servlet-context.xml的代码。如果概要文件是prod,我想导入demo.xml文件,如果概要文件是test,我想导入demo-test.xml文件。 但是我得到错误对于行和对于 基于spring xml配置中与bean概要文件相关的错误,我甚至尝试将上下文更改为“http://www.springframework.org/schema/beans/sp

  • 这可能是一个很新手的问题,但是我搜索过,要么是我的理解有很大的差距,要么是在做一些我想不通的错误的事情。 在我的上下文文件中,这里有一个节选 现在我在myBeanOne中: 当我试图在调用setDataSource的行上执行该命令时,我会得到以下错误: 行中: 我尝试了十种不同的配置来使其工作,但我似乎做不到。感谢任何协助,谢谢。 我知道这是一个非常基本的问题,但我正在与之斗争。 谢谢你的耐心。

  • 在我的Spring项目中,我通常使用以下三个文件下的xml配置: 我已经将此bean用于在同一个applicationContext-db.xml文件中定义的Sessionfactory bean。 PS:当我删除扩展类时,我的数据源已定义,但我需要这个类来设置Spring Security ACL配置。

  • 我正在尝试将Spring Boot配置文件与Maven配置文件集成,但由于某些原因,总是会选择默认配置文件。 MVN清洁测试-Dspring.profiles.active=产品(工作) 日志: mvn干净测试-prod(不起作用,总是选择默认配置文件) 日志: pom。xml src/测试/资源/应用程序。属性 src/test/resources/application-dev.propert

  • 使用 fixture 对象轻松验证 GUI 组件 TestNG-Abbot 是一种测试框架,它为 GUI 组件的测试带来了新的活力。本月,Andrew Glover 将带领您亲历使用 TestNG-Abbot 测试 GUI 过程中难度最大的部分,即理解用户场景的实现过程。一旦理解了它,您会发现将 GUI 组件隔离并使用框架所含的极其方便的 fixture 对象对其进行验证是多么地简单。 使用 Sw

  • 我有一个testng xml文件,它被设置为运行一个特定的类,该类的方法包含以下组标记或被分组为以下类型之一: 并行测试 顺序测试 烟雾测试 虽然我的一些测试被指定为并行或顺序测试,但一些测试可能包含一个额外的标签“冒烟测试”。在这个场景中,我希望能够只运行那些被归类为“烟雾测试”的组件。当我运行测试时,它要么找不到任何测试,要么只是运行所有分组为“sequential-test”的测试。我似乎不