Fixtures 编程中的固定装置是什么?

Fixtures 编程中的固定装置是什么?,fixtures,ui-testing,uitest,test-fixture,Fixtures,Ui Testing,Uitest,Test Fixture,我已经多次听说过这个术语(在编程环境中),但找不到任何解释它的含义。有什么好文章或解释吗?我想你指的是: 测试夹具的目的是确保有一个众所周知的 以及固定的运行测试的环境,以确保结果 可重复。有些人称之为测试上下文 固定装置示例: 使用特定的已知数据集加载数据库 擦除硬盘并安装已知的干净操作系统安装 复制特定的已知文件集 准备输入数据和设置/创建假对象或模拟对象 (来源:维基百科,见上面的链接) 这里还有一些。正是针对这个主题,JUnit有一个解释得很好的文档。是链接 本条的相关部分为: 测试

我已经多次听说过这个术语(在编程环境中),但找不到任何解释它的含义。有什么好文章或解释吗?

我想你指的是:

测试夹具的目的是确保有一个众所周知的 以及固定的运行测试的环境,以确保结果 可重复。有些人称之为测试上下文

固定装置示例:

  • 使用特定的已知数据集加载数据库
  • 擦除硬盘并安装已知的干净操作系统安装
  • 复制特定的已知文件集
  • 准备输入数据和设置/创建假对象或模拟对象
(来源:维基百科,见上面的链接)


这里还有一些。

正是针对这个主题,JUnit有一个解释得很好的文档。是链接

本条的相关部分为:

测试需要在一组已知对象的背景下运行。这组对象称为测试夹具。在编写测试时,您经常会发现编写代码来设置夹具的时间比实际测试值的时间要多

在某种程度上,您可以通过仔细关注所编写的构造函数来简化fixture代码的编写。然而,更大的节约来自于共享fixture代码。通常,您将能够在几个不同的测试中使用相同的夹具。每种情况都会向夹具发送稍微不同的消息或参数,并检查不同的结果

当您有一个通用夹具时,请执行以下操作:

为夹具的每个零件添加一个字段 用@org.junit.Before注释一个方法,并初始化该方法中的变量 用@org.junit.After注释方法,以释放在安装程序中分配的任何永久资源 例如,要编写几个想要使用12瑞士法郎、14瑞士法郎和28美元的不同组合的测试用例,首先创建一个fixture:


我认为PHP单元测试很好地解释了这一点:

编写测试最耗时的部分之一是编写 将世界设置为已知状态,然后将其返回到其初始状态的代码 测试完成时的原始状态。这种已知状态称为 测试的夹具

此外,Yii文件描述了夹具测试的良好状态:

自动化测试需要执行多次。为了确保测试 这个过程是可重复的,我们希望在一些已知的环境中运行测试 这个州叫fixture。例如,测试创建后功能 在博客应用程序中,每次运行测试时,表 存储有关帖子的相关数据(如帖子表、评论 表)应恢复到某个固定状态

下面是夹具测试的简单示例

<?php
use PHPUnit\Framework\TestCase;

class StackTest extends TestCase
{
    protected $stack;

    protected function setUp()
    {
        $this->stack = [];
    }

    protected function tearDown()
    {
        $this->stack = [];
    }

    public function testEmpty()
    {
        $this->assertTrue(empty($this->stack));
    }

    public function testPush()
    {
        array_push($this->stack, 'foo');
        $this->assertEquals('foo', $this->stack[count($this->stack)-1]);
        $this->assertFalse(empty($this->stack));
    }

    public function testPop()
    {
        array_push($this->stack, 'foo');
        $this->assertEquals('foo', array_pop($this->stack));
        $this->assertTrue(empty($this->stack));
    }
}
?>


此PHP单元测试具有名为
setUp
tearDown
的函数,在运行测试之前,您可以设置数据,完成后可以将其恢复到初始状态。

在Xamarin.UITest中,解释如下:

using System;
using System.IO;
using System.Linq;
using NUnit.Framework;
using Xamarin.UITest;
using Xamarin.UITest.Queries;

namespace xamarin_stembureau_poc_tests
{
    [TestFixture(Platform.Android)]
    [TestFixture(Platform.iOS)]
    public class TestLaunchScreen
    {
        IApp app;
        Platform platform;

        public Tests(Platform platform)
        {
            this.platform = platform;
        }

        [SetUp]
        public void BeforeEachTest()
        {
            app = AppInitializer.StartApp(platform);
        }

        [Test]
        public void AppLaunches()
        {
            app.Screenshot("First screen.");
        }

        [Test]
        public void LaunchScreenAnimationWorks()
        {
            app.Screenshot("Launch screen animation works.");
        }
    }
}
通常,每个Xamarin.UITest都作为引用的方法编写 作为一种测试。包含测试的类称为测试 固定装置测试夹具包含单个测试或逻辑测试 测试分组,并负责进行测试的任何设置 在测试完成时运行和执行任何需要执行的清理。 每个测试应遵循Arrange-Act断言模式:

  • 安排–测试将设置条件并初始化内容,以便执行测试
  • Act–测试将与应用程序交互、输入文本、按下按钮等
  • 断言–测试检查在Act步骤中执行的操作的结果,以确定正确性。例如 应用程序可能会验证特定错误消息是否正确 显示

在Xamarin.UITest代码中,它如下所示:

using System;
using System.IO;
using System.Linq;
using NUnit.Framework;
using Xamarin.UITest;
using Xamarin.UITest.Queries;

namespace xamarin_stembureau_poc_tests
{
    [TestFixture(Platform.Android)]
    [TestFixture(Platform.iOS)]
    public class TestLaunchScreen
    {
        IApp app;
        Platform platform;

        public Tests(Platform platform)
        {
            this.platform = platform;
        }

        [SetUp]
        public void BeforeEachTest()
        {
            app = AppInitializer.StartApp(platform);
        }

        [Test]
        public void AppLaunches()
        {
            app.Screenshot("First screen.");
        }

        [Test]
        public void LaunchScreenAnimationWorks()
        {
            app.Screenshot("Launch screen animation works.");
        }
    }
}

希望这对那些希望更好地理解编程中的fixture的人有所帮助。

fixture一词因上下文、编程语言或框架而异

1。运行测试所针对的已知状态

编写测试最耗时的部分之一是编写 将世界设置为已知状态,然后将其返回到其初始状态的代码 测试完成时的原始状态。这种已知状态称为 测试的夹具。

测试夹具(也称为测试上下文)是 运行测试所需的先决条件或状态。开发人员应该设置 在测试前恢复已知良好状态,并恢复到原始状态 测试后的状态。

2。包含样本数据的文件

Fixtures是一个用于示例数据的花哨词汇。固定装置允许您 在测试之前,使用预定义数据填充测试数据库 跑fixture独立于数据库,并用YAML编写。有 每个模型一个文件。

3。设置所需状态的过程。

软件测试夹具通过以下方式为测试过程设置系统: 为它提供所有必要的代码来初始化它,从而 满足可能存在的任何先决条件。例如: 从客户站点加载具有已知参数的数据库 在运行测试之前。


我写这个答案是为了给自己写一个关于什么是“固定装置”的速记

同一数据多次测试 测试夹具:对多个测试使用相同的数据配置 如果您发现自己编写了两个或多个对类似数据进行操作的测试,则可以使用测试夹具。这允许您为几个不同的测试重用相同的对象配置

你可以在

在集成测试期间,夹具可用于
[
  {
    "model": "myapp.person",
    "pk": 1,
    "fields": {
      "first_name": "John",
      "last_name": "Lennon"
    }
  },
  {
    "model": "myapp.person",
    "pk": 2,
    "fields": {
      "first_name": "Paul",
      "last_name": "McCartney"
    }
  }
]