代码之家  ›  专栏  ›  技术社区  ›  Jagmal

有没有好的Perl自动化测试套件?[关闭]

  •  9
  • Jagmal  · 技术社区  · 16 年前

    有人能为Perl推荐一些好的自动化测试套件框架吗?

    14 回复  |  直到 16 年前
        1
  •  24
  •   Ovid    16 年前

    这真的取决于你想做什么,但这里有一些背景。

    首先,您通常使用test::more或test::simple编写测试程序作为核心测试程序:

    use Test::More tests => 2;
    
    is 3, 3, 'basic equality should work';
    ok !0, '... and zero should be false';
    

    在内部,调用test::builder将这些测试结果输出为tap( Test Anything Protocol )test::harness(围绕tap::harness的一个薄包装),读取并解释tap,告诉您测试是通过还是失败。上面提到的“prove”工具与test::harness捆绑在一起,所以假设将上面的内容保存在t/目录(标准的perl测试目录)中为“numbers.t”,那么您可以使用以下命令运行它:

    prove --verbose t/numbers.t
    

    或者运行该目录中的所有测试(以递归方式,假设您希望下降到子目录中):

    prove --verbose -r t/
    

    (当然,详细信息是可选的)。

    作为旁注,不要使用测试单元。很多人推荐它,但它在很久以前就被放弃了,并且没有与现代测试工具集成。

        2
  •  9
  •   brian d foy    16 年前

    退房 CPAN Testers 有很多自动化测试工具。其中大部分应该在CPAN上,所以您可以修改它以满足您的需求。使用tap::harness编写自己的测试仪也很容易。

    你到底需要做什么?你是如何把它融入你的过程的?

        3
  •  5
  •   EvdB loudej    16 年前

    只要使用生成TAP(测试任何协议)输出的测试,您可能会发现这一点很有用: http://sourceforge.net/projects/smolder

        4
  •  5
  •   brian d foy    16 年前

    你见过吗? smolder ?

    “开发人员和测试人员使用Smoke测试聚合器来上传(自动或手动)并使用测试任何东西协议查看Smoke/回归测试。详细信息和趋势通过电子邮件或Atom订阅源进行图表和通知。”

        5
  •  2
  •   Leon Timmermans    16 年前

    如果我正确理解你,你正在寻找 TAP::Harness

        6
  •  2
  •   ChrisN    16 年前

    如果你在用 ExtUtils::MakeMaker Module::Build ,然后您可以通过输入命令“make test”或“build test”自动运行所有测试,该命令将执行项目的t/子文件夹中的任何*.t文件。

    如果你不使用其中任何一种,那么你可以使用 TAP::Harness 自动执行多个测试脚本。

    要实际编写测试,请使用 Test::More 或者其他人在这里建议的任何模块。

        7
  •  2
  •   Eric Wilhelm    16 年前

    我们必须运行所有的测试文件 手动测试

    您当然希望使用prove(运行测试)和/或module::build(生成代码,然后使用prove内部使用的相同测试工具代码运行测试)。

        8
  •  2
  •   adrianh    16 年前

    你说:

    “我要寻找的是一个更自动化的框架,可以进行增量测试/构建检查等。”

    仍然不完全确定你在追求什么。正如其他人提到的,您希望查看基于test::harness/tap的内容。绝大多数Perl测试社区都使用这个框架,所以通过使用这个框架,您将获得更多的支持(以及有用的现有代码)。

    您能再多谈谈“增量测试/构建检查”的含义吗?

    我猜你想把你的测试分成小组,这样在某些情况下你只运行某些测试集?

    有几种方法可以做到这一点。最简单的方法是只使用文件系统-拆分测试目录,这样您就有了如下内容:

    core/
     database.t
     infrastructure.t
    style/
      percritic.t
    ui/
      something.t
      something-else.t
    

    等等…然后,您可以使用命令行“prove”工具来运行它们,或者只运行某些目录等。

    Prove有很多有用的选项,可以让您选择运行哪些测试以及以何种顺序运行(例如最近失败的顺序)。这一点——全部靠它本身——可能会让你达到你所需要的目标。

    (顺便说一句,从CPAN获取最新版本的test::simple/prove/etc很重要。最近的版本有很多,更多的功能)。

    如果您有面向对象的思想,或者以前有过XUnit框架的经验,那么您可能想看看test::class,它是一个构建在tap/test::harness层之上的PerlXUnit框架。我认为它比PerlUnit要好得多,但是我写它的时候会这样说:—)

    有关test::class的更多信息,请查看Delicious。 http://delicious.com/tag/Test::Class

    如果这不是你所追求的——你能详细介绍一下你想要什么样的功能吗?

    干杯,

    阿德里安

        9
  •  1
  •   Matthew Watson    16 年前

    就我个人而言,我喜欢test::most,它基本上是test::more,带有一些附加的酷特性。

        10
  •  1
  •   Darren Meyer    16 年前

    选择的测试套件框架是 Test::Harness 它负责控制测试运行、收集结果等。

    存在各种模块来提供某些类型的测试,其中最常见的可以在 Test::Simple Test::More (两者都包含在测试简单分布中)。CPAN上的整个测试名称空间专用于专门的单元测试模块,其中大多数模块设计为在test::harness下运行。

    按照惯例,测试存储在项目的t/目录中,并且每个测试文件都使用文件扩展名.t;测试通常通过

     prove t/*.t
    

    模块分发通常包括一个名为“test”的make目标,它在安装之前运行测试套件。默认情况下,CPAN安装过程要求在构建之后通过测试,然后才能安装模块。

        11
  •  0
  •   Leon Timmermans    16 年前

    我会去测试:更多,或者一般来说,任何输出 TAP

        12
  •  0
  •   Jagmal    16 年前

    到目前为止,我们使用test::more,但当前的问题是我们必须手动运行所有测试文件进行测试。我要寻找的是一个更自动化的框架,可以执行增量测试/构建检查等。

    一个围绕测试的包装器:更多这样做是理想的,但是任何更好和更实用的东西也可以。

    我正在检查PerlUnit,看看是否有帮助。

        13
  •  0
  •   zigdon    16 年前

    您是否知道“证明”实用程序(来自app::prove)?您可以告诉它在一个给定的目录中递归地运行所有测试,包括是否冗长等等。

        14
  •  0
  •   Peter Stuifzand    16 年前

    对于Perl中的自动化测试,请看一下 Test::Harness ,其中包含 prove 工具。

    这个 证明 可以使用以下命令执行工具:

    prove -r -Ilib t
    

    这将在添加时递归测试“t/”目录中的所有*.t文件 lib 到include路径。