On Dec 3, 2006, at 15:55 , Richard wrote:
def test_eval_bad_operator
- I take it that to conform to unit-test’s expectations, the test
names should begin with test_ and not test1_, test2_ etc.
Numbering tests is not typical behavior (I’ve seen it very rarely).
Using #setup and #teardown its easy to avoid the need to number tests.
The only restrictions test/unit has are that the must start with
‘test’ and accept 0 arguments.
- How about me using test_1_Whatever, test_2_SomethingElse, etc,?
Wouldn’t that conform equally well and cause any error msgs
produced by
Test to be presented in lexicographical order (with fewer than 10
tests; double digits if I wanted up to 99 tests, etc.)?
I match test methods to implementation methods and test classes to
implementation classes. This allows easy auditing (for example with
ZenTest) or even visually of your test coverage.
def test_foo() end
matches
def foo() end
and if I need to test a couple edge-cases of foo:
def test_foo_empty_foopy() end
def test_foo_no_blah() end
And everything stays in run order.
- I like to produce tests in one-line format if they’ll fit on my
screen reasonably so that I can write and scan them more quickly. Do
see any substantive problem in my continuing to do that?
I don’t care, they’re your tests (but I hate ; so I had to get rid of
them.)
I sometimes write:
def some_method() do_the_stuff end
because the ; is ugly, but almost always for test stub objects.
Most people add newlines.
K:_Projects\Ruby\TestUnitTesting\ReversePolishEvaluator>
====== end ============
I thought the problem might be that I had no errors, so that there was
nothing for Test to report. So I introduced an erroneous assertion
(expressed in three lines rather than my preferred one-line format)
but still got nothing.
You ran your implementation, not your tests.
Then I ran this expanded test through SciTE and got (both in one-line
format as well as three-line format):
==== SciTE output ====
ruby RevPolishEvaluatorTest.rb
Loaded suite RevPolishEvaluatorTest
Started
…F…
Finished in 0.031 seconds.
This one ran with -n
Do you have any idea why the command with the “-n” switch failed on my
system? My code follows.
Try again running your test file
Again, thanks for your suggestions. I look forward to your comments.
Oh, also you can make your test shorter with setup:
=== tc_TestSet2.rb ===
require ‘.\RevPolishEvaluator.rb’
class ErrorTests < Test::Unit::TestCase # The succinct way
def setup() @p = Polish.new end
def test_1_noarg; assert_raise(ArgumentError) {Polish.new().eval}; end
def test_1_noarg() assert_raise ArgumentError do @p.eval end end
(As you can see, I hate punctuation.)
–
Eric H. - [email protected] - http://blog.segment7.net
I LIT YOUR GEM ON FIRE!