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

在运行单个测试用例时,是否有一种很好的方法来初始化测试套件?

梁丘赞
2023-03-14

在JUnit4下,我有一个测试套件,它使用@class规则注释来引导框架。这是能够在测试期间构造某些对象所必需的。它还将一些任意应用程序属性加载到静态中。这些通常特定于当前测试套件,并且将被整个套件中的众多测试使用。我的测试套件看起来像这样(其中FrameworkResources扩展了ExternalResources并做了很多引导工作):

@RunWith(Suite.class)
@SuiteClasses({com.example.test.MyTestCase.class})
public class MyTestSuite extends BaseTestSuite {

    @ClassRule
    public static FrameworkResource resource = new FrameworkResource();

    @BeforeClass
    public static void setup(){
        loadProperties("props/suite.properties")
    }
}

上面的工作非常好,主构建执行所有测试套件及其各自的测试用例(SuiteClass?)没有问题。问题是当我在eclipse中并且我想单独运行一个测试用例而不必运行整个套件(作为本地开发过程的一部分)。我会右键单击java文件Run As

我的问题是:

  1. JUnit4是否为这个问题提供了解决方案(没有在每个测试用例中重复初始化代码)?测试用例可以说类似@依赖(MyTestSuite.class)吗?。
  2. 如果JUnit没有一个神奇的解决方案,有没有一个通用的设计模式可以帮助我?

共有1个答案

龚宏壮
2023-03-14

由于您只运行一个测试类,一个好的解决方案是将初始化代码移动到测试类。您需要添加@之前注释来初始化属性。

这将需要您在所有测试类上复制代码。为了解决这个问题,您可以创建一个具有@之前方法的抽象父类,以便所有子类具有相同的初始化。

此外,初始化的数据可以位于静态变量上,用于检查是否已经为该特定执行进行了初始化。

 类似资料:
  • 我正在为RESTful API测试自动化编写一个框架,我已经决定使用REST Assured了,我不是100%确定是否要添加一个层来允许使用像Gherkin这样的领域特定语言来定义测试,因此添加一个像Cucumber这样的BDD框架。您的观点是什么? 在API自动化测试中使用BDD是一个好方法吗?

  • 当我运行下面的代码时,两个测试用例都实现了: 预期行为 null null 为什么junit用每个测试方法调用。它是junit中的一个bug,或者是故意提供的。

  • 问题内容: 如果是跑它运行在您的文件结尾通过运行启动格式的功能和使用(* T testing.T)模块。我想知道文件中的每个功能是同时运行还是确定地分别运行每个功能?是否为每个人创建一个执行例程?如果确实为每个例程创建了一个go例程,是否可以某种方式监视go例程?是否有可能做类似的事情并为每个实例获取一个实例并对其进行监控,诸如此类? 注意:这个问题假设您使用go(测试)随附的测试框架。 问题答案

  • 在空手道中,我希望有一个模式变量,它是响应数据的超集,这样我就可以用相同的模式测试多个请求。 这对于GraphQL应该特别有用,因为请求本身定义了返回的字段。 预期模式: 回答数据: 在本例中,响应返回的所有键。数据应该在架构中,但架构中的任何键都不在响应中。数据应该被忽略。 在空手道中有没有办法做到这一点,或者有没有计划在将来增加这一功能? 编辑:更新了示例,因为唯一遗漏的属性是一个可为空的属性

  • 问题内容: 因此,我敢肯定那里有类似的东西,但是我一直在寻找一个小时,却没有找到我真正想要的东西。说我有一堂课,看起来像这样: 我该如何做这样的工作? 问题答案: 使用Mockito,您可以像这样 监视真实对象 : 有一些陷阱,因此也请查看相关文档。

  • 基本的问题是,当我将JUnit测试分组为套件或套件组时,所有测试的< code>@Parameters方法在单独的套件或测试执行之前首先运行。我们的设置如下: 我们有多个测试类文件,每个文件都有包含实际测试的静态内部类。 以此类推,,等。现在,为了将所有这些测试套件收集到一个更大的集合中,我创建了一个更大型的测试套件,如下所示: 但是,无论我是运行主套件,还是,所有内部类的方法都在所有方法或实际测