5

私は厳密にテスト駆動開発を始めたいと思っています。しかし、Moose と MooseX::FollowPBP によって生成されたメソッドをどの程度テストする必要があるのか​​疑問に思っていました。たとえば、次のクラスがあります。

package Neu::Series;
use Moose;
use MooseX::FollowPBP;

use File::Find::Wanted;

has 'file_regex' => (
    isa=>'RegexpRef',
    is=>'rw',
    default => sub{
                 qr{
                   [A-Z]       #Uppercase letter
                   [a-zA-Z]*   #any letter, any number of times
                   [-]         #dash
                   (           #open capturing parenthesis
                   [0-9]
                   [0-9]
                   [0-9]
                   [0-9]
                   [a-zA-Z]?   #any letter, optional
                   )           #close capturing parenthesis
               }xms;
           },
);


has 'top_dir' => (
    isa=>'Str',
    is=>'rw',
);


has 'access' =>(
    isa=>'Neu::Access',
    is=>'ro',
    required=>1,

);

1;

私の現在のテストスクリプトは次のとおりです。

use strict;
use warnings;
use Test::More tests => 8;
use Neu::Access;

BEGIN{ use_ok('Neu::Series'); }

can_ok( 'Neu::Series', 'new');
can_ok( 'Neu::Series', 'set_file_regex');
can_ok( 'Neu::Series', 'get_file_regex');
can_ok( 'Neu::Series', 'set_top_dir');
can_ok( 'Neu::Series', 'get_top_dir');
can_ok( 'Neu::Series', 'get_access');

my $access = Neu::Access->new(dsn => 'test');
my $series_worker = Neu::Series->new(access => $access);

isa_ok($series_worker, 'Neu::Series');

これは十分なテストですか、それとも過剰なテストですか? (つまり、正規表現の明らかに欠落しているテスト以外に)。

これについてどこかでウェブページか別の投稿を見たと思ったのですが、今日は見つけられませんでした。

4

4 に答える 4

5

アクセサーが正しく生成されたことをテストしても意味がありません。そうでない場合は、作成した実際のテストが失敗するため、すぐにわかります。

Moose自体は、アクセサーが正しく生成されていること、Mooseを使用するクラスがコンストラクターを取得していることなどをテストします。依存関係を使用するポイントの 1 つは、ヘルパー コードではなく、アプリケーションの作成とテストに集中できるようにすることです。

私はdaotoadに同意します。おそらく、自分で書いた制約と強制をテストする価値があります。

于 2010-02-16T03:53:03.020 に答える
1

Dave、daotoad、Ether、Elliot、Brian に感謝します。回答、コメント、ブログを読むと、2 つの顕著な点があるようです。

(1) Moose が本来の動作をすることを確認するためのテストは必要ありません。この点については、誰もが同意すると思います。

(2) Moose によって生成されたメソッドのテストは、インターフェイスの確立、テスト、および保守に適しています。この点については、ほとんどの意見が一致しています。

繰り返しになりますが、ご意見をお寄せいただきありがとうございます。

編集:

これは単なるコミュニティ ウィキの要約です。個々の回答とコメントをお読みください。

于 2010-02-17T13:45:40.643 に答える
1

仕様のテストに集中します。Mooseに何をしてほしいかを正しく伝えましたか?

この目的のために、次のテストから始めます。

  • 読み取り/書き込み属性にアクセサーとミューテーターの両方があることを確認します。
  • 読み取り専用属性にアクセサーがあり、ミューテーターがないことを確認します。
  • 型の制約と強制をテストします。許容値のみを設定できることを確認します。属性 sIf がとして表示され、 asに強制されると予想VIIされる場合は、それが実行されることをテストします。StrInt7
于 2010-02-16T01:19:49.003 に答える