[fixtures] 프로그래밍의 비품은 무엇입니까?

나는이 용어에 대해 (프로그래밍의 맥락에서) 여러 번 들었지만 그 의미에 대한 설명을 찾을 수 없었다. 좋은 기사 나 설명이 있습니까?



답변

테스트 픽스처를 언급하고 있다고 생각합니다 .

테스트 픽스처의 목적은 결과가 반복 가능하도록 테스트가 실행되는 잘 알려진 고정 환경이 있는지 확인하는 것입니다. 어떤 사람들은 이것을 테스트 컨텍스트라고 부릅니다.

비품의 예 :

  • 알려진 특정 데이터 세트로 데이터베이스로드
  • 하드 디스크 지우기 및 알려진 깨끗한 운영 체제 설치 설치
  • 알려진 특정 파일 세트 복사
  • 입력 데이터 준비 및 가짜 또는 모의 객체 설정 / 생성

(출처 : Wikipedia, 위 링크 참조)

다음은 ‘Google Test’프레임 워크 문서의 실제 예제입니다 .


답변

PHP 단위 테스트는 이것에 대해 잘 설명하고 있다고 생각합니다.

테스트 작성에서 가장 시간이 많이 걸리는 부분 중 하나는 코드를 작성하여 알려진 상태로 세계를 설정 한 다음 테스트가 완료되면 원래 상태로 되 돌리는 것입니다. 이 알려진 상태를 테스트의 치구라고합니다.

또한 Yii 문서에는 픽스처 테스트가 좋은 형태로 설명되어 있습니다.

자동화 된 테스트는 여러 번 실행해야합니다. 테스트 프로세스를 반복 가능하게하기 위해 고정 장치라고하는 알려진 상태에서 테스트를 실행하려고합니다. 예를 들어 블로그 응용 프로그램에서 게시물 작성 기능을 테스트하려면 테스트를 실행할 때마다 게시물에 대한 관련 데이터를 저장하는 테이블 (예 : Post 테이블, Comment 테이블)을 고정 된 상태로 복원해야합니다.

다음은 조명기 테스트의 간단한 예입니다

<?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 단위 테스트는 이름과 기능이 setUptearDown당신 설정 데이터를 테스트를 실행하기 전에 및 완료에 당신은 초기 상태로 복원 할 수 있습니다.


답변

고정구라는 용어는 상황, 프로그래밍 언어 또는 프레임 워크에 따라 다릅니다.

1. 테스트가 실행되는 알려진 상태

테스트 작성에서 가장 시간이 많이 걸리는 부분 중 하나는 코드를 작성하여 알려진 상태로 세계를 설정 한 다음 테스트가 완료되면 원래 상태로 되 돌리는 것입니다. 이 알려진 상태를 테스트의 치구라고합니다.
PHP-Unit 문서

테스트 픽스처 (테스트 컨텍스트라고도 함)는 테스트를 실행하는 데 필요한 사전 조건 또는 상태 세트입니다. 개발자는 테스트 전에 알려진 정상 상태를 설정하고 테스트 후에 원래 상태로 돌아와야합니다.
위키 백과 (xUnit)

2. 샘플 데이터를 포함하는 파일

Fixtures는 샘플 데이터를위한 멋진 단어입니다. 고정 장치를 사용하면 테스트를 실행하기 전에 테스트 데이터베이스를 사전 정의 된 데이터로 채울 수 있습니다. 비품은 데이터베이스 독립적이며 YAML로 작성됩니다. 모델 당 하나의 파일이 있습니다.
RubyOnRails.org

3. 필요한 상태를 설정하는 프로세스. 

소프트웨어 테스트 픽스처는 시스템을 초기화하는 데 필요한 모든 코드를 제공하여 테스트 프로세스를위한 시스템을 설정하므로 사전 조건이 충족 될 수 있습니다. 예를 들어 테스트를 실행하기 전에 고객 사이트에서 알려진 매개 변수가있는 데이터베이스를로드 할 수 있습니다.
위키 백과


답변

JUnit은 그 주제에 정확하게 설명되어 있습니다. 여기 링크가 있습니다!

기사의 관련 부분은 다음과 같습니다

알려진 개체 집합의 배경에 대해 테스트를 실행해야합니다. 이 개체 집합을 테스트 픽스처라고합니다. 테스트를 작성할 때 실제로 값을 테스트하는 것보다 조명기를 설정하기 위해 코드를 작성하는 데 더 많은 시간을 소비한다는 것을 알게 될 것입니다.

어느 정도 작성하는 생성자에주의를 기울이면 픽스쳐 코드 작성이 더 쉬워 질 수 있습니다. 그러나 조명기 코드를 공유하면 훨씬 더 많은 비용을 절약 할 수 있습니다. 종종 여러 가지 다른 테스트에 동일한 픽스처를 사용할 수 있습니다. 각각의 경우 조명기에 약간 다른 메시지 나 파라미터를 보내고 다른 결과를 확인합니다.

일반적인 고정물이 있으면 다음과 같이합니다.

조명기의 각 부분에 대한 필드를 추가합니다. @ org.junit로 메소드에 주석을 답니다. 그 전에 변수를 초기화합니다. @ org.junit로 메소드에 주석을 답니다. 12 스위스 프랑, 14 스위스 프랑 및 28 미국 달러의 서로 다른 조합으로 작동하려는 여러 테스트 사례는 먼저 조명기를 만듭니다.

public class MoneyTest {
    private Money f12CHF;
    private Money f14CHF;
    private Money f28USD;

    @Before public void setUp() {
    f12CHF= new Money(12, "CHF");
    f14CHF= new Money(14, "CHF");
    f28USD= new Money(28, "USD");
    }
}


답변

Xamarin.UITest에서는 다음과 같이 설명됩니다.

일반적으로 각 Xamarin.UITest는 테스트라고하는 방법으로 작성됩니다. 테스트를 포함하는 클래스를 테스트 픽스처라고합니다. 테스트 픽스처에는 단일 테스트 또는 논리적 테스트 그룹이 포함되며 테스트 실행을위한 모든 설정과 테스트 완료시 수행해야하는 정리를 담당합니다. 각 테스트는 Arrange-Act-Assert 패턴을 따라야합니다.

  • 정렬 – 테스트는 테스트를 수행 할 수 있도록 조건을 설정하고 상황을 초기화합니다.
  • 동작 – 테스트가 응용 프로그램과 상호 작용하고 텍스트를 입력하거나 버튼을 누르는 등의 작업을 수행합니다.
  • Assert – 테스트는 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.");
        }
    }
}

이것이 Fixtures in Programming에 대한 더 나은 이해를 찾는 사람에게 도움이되기를 바랍니다.


답변