Dinamik veri dosyasından PHPUnit testler oluşturmak

2 Cevap php

Ben giriş ve çıkışları ile beklenen bir veri dosyası var. Bir örnek olabilir:

input:   output:
2        3
3        5
4        Exception
5        8
...      ...

Şu anda veri dosyasından okunur ve her {girdi, çıktı} çifti için bir test gerçekleştirmek için özel bir çözüm var. Ben bir PHPUnit tabanlı bir çözüm içine bu dönüştürmek ve ben test adı forXassertY kullanarak girdi başına bir testi yaptırmak istiyorum istiyorum. Yani ilk üç test for2assert3 denir (), for3assert5 () ve for4assertException () olacaktır.

Ben dinamik test yöntemleri oluşturmak ve bu testlerin temel olarak veri dosyasını tutmak mümkün olmadığını testlere varolan verileri dönüştürmek istemiyorum. Ben daha sonra diğer bazı testler ekleyin ve aynı zamanda işlemek ve Hudson kullanarak çıktı görüntülemek istediğiniz gibi PHPUnit dönüştürmek istiyorum.

Önerileriniz?

2 Cevap

: Sen PHPUnit en data providers Bunun için kullanabilirsiniz

<?php

require_once 'PHPUnit/Framework/TestCase.php';

class ProviderTest extends PHPUnit_Framework_TestCase
{
    public function testCaseProvider()
    {
        // parse your data file however you want
        $data = array();
        foreach (file('test_data.txt') as $line) {
            $data[] = explode("\t", trim($line));
        }

        return $data;
    }

    /**
     * @dataProvider testCaseProvider
     */
    public function testAddition($num1, $num2, $expectedResult)
    {
        $this->assertEquals($expectedResult, $num1 + $num2);
    }
}

?>

ve test_data.txt dosyası şuna benzer:

1   2   3
2   2   4
3   5   7

Ardından testi çalıştırın:

$ phpunit ProviderTest.php
PHPUnit 3.4.12 by Sebastian Bergmann.

...F

Time: 0 seconds, Memory: 5.75Mb

There was 1 failure:

1) ProviderTest::testAddition with data set #2 ('3', '5', '7')
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-7
+8

/Users/dana/ProviderTest.php:23

FAILURES!
Tests: 4, Assertions: 3, Failures: 1.

Eh, PHP dosyaları sadece metin dosyaları, böylece veri dosyası okumak ve. Php test dosyaları bir demet tükürmek istiyorum bir TestGenerator.php komut dosyası yazabilirsiniz. "Satırını okumak ayrıştırmak, PHP tükürmek" olarak Testi Generator script kadar basit olacaktır. Sonra, sadece build / test çalışması sürecinin bir parçası olarak bu test jeneratör komut dosyasını çalıştırın, ve gitmek için iyi bir konum.