Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • Please. some people just want to use real OO test suite, not just poor Test::Simple.
    • Test::Class is the way to go here. It also integrates with all of the standard Perl testing libraries. It doesn't look like Test::Unit::Lite does that.

      • Standard Perl testing libraries have poor and ugly non-OO API. Theirs tests also don't die after failure which differs from JUnit, PerlUnit, etc.
        • I should also add that if you really want to march to a different drummer and use a piece of software that virtually no one else will touch, that's fine, but at least see if you can submit patches to it so that it can at least output TAP and integrate with standard testing tools.

          • Well, yes. It means that the standard testing tool are really TAP protocol and Test::Harness module, not Test::Simple or Test::More.

            BTW, I'd like to see support for nested tests for TAP protocol, something like:
            unit 1..2
            ok PASS unit 1/1
            ok PASS unit 1/2
            unit 1..1
            ok PASS unit 2/1
            unit 1..3
            ok PASS unit 3/1
            not ok Something goes wrong with 3/2
            ok PASS unit 3/3

            It is sad that the JUnit model really can't be implemented with Perl's TAP because TAP protocol lacks of nested tests.

            • Agreed. This is a serious limitation of TAP. If you'd like to push for this, sign up for the TAP IETF mailing list and we can work on getting it done. []

              On the other hand, the xUnit model which says "die on failure and you have no choice in the matter" doesn't fit well with TAP, either. Tough to assert a leading plan of eight tests when it dies after three and you get a second failure because you didn't complete the plan (unless you artificially fill in a bunch of useless failing tests to pad things out).

            • Why do I always remember new points after I hit submit?

              Actually, if you strictly adopt jUnit, it fits TAP quite nicely. Remember that a given test method containing several asserts is actually a single test. It's different from how Perl looks at things. So let's consider the following test method (I snagged it from a tutorial []):

              public void testAddItem() {

                  Product book2 = new Product("Pragmatic Project Automation", 29.95);

                  double expectedBalanc

              • Test::Unit and Test::Unit::Lite currently work like you wrote: single TAP line for single test function. It is somewhat limited.

                I think it would be much useful if TAP had support for nested tests:


                unit 1..0 testAddItem
                unit OK assertEquals(0.0, 0.0)
                unit OK assertEquals(2, 2)
                OK testAddItem
                unit 1..0 testAnotherItem
                unit not OK assertEquals(1, 2)
                # no more assertions in this function
                not OK testAnotherItem


                I think I'll join the IETF effort because in my opinion the TAP protocol is t

            • Assertion numbers are like version numbers: they're meaningless except insofar as they're different from each other.