Hello!
I’m writting some code wich makes MD5 checksum on some files. I’d like
to write a unit test for that code, but I don’t know how to proceed. I
have the same problem with another piece of code which launch a command
line which generate some files. How can I unit test such things? Should
I use ruby mock? How? Or something else? And then what? I need help, please!
I’m writting some code wich makes MD5 checksum on some files. I’d like
to write a unit test for that code, but I don’t know how to proceed. I
have the same problem with another piece of code which launch a command
line which generate some files. How can I unit test such things?
You are in good company here. The TestUnit framework comes with the standard
Ruby install and is amazingly easy to use. For details see:
Hello!
I’m writting some code wich makes MD5 checksum on some files. I’d like
to write a unit test for that code, but I don’t know how to proceed.
I’d use regression testing - compute the reference MD5 sum of your testfiles
using a known working MD5 implementation (e.g. md5 on Linux :-), and
check if your results are the same; sth like
#!/usr/bin/env ruby
require ‘test/unit’
class MD5Test < Test::Unit::TestCase
def test_empty_file
# value computed by md5 for an empty file
assert_equal(“d41d8cd98f00b204e9800998ecf8427e”,md5sum(“empty_file”))
end
end
Then, you just add additional testfiles until you’re satisfied
(BTW, I wouldn’t use random files - when such a test fails, it can be
hard to reproduce the failure, but YMMV).
I have the same problem with another piece of code which launch a
command line which generate some files. How can I unit test such
things?
Hm. You could create some reference data files (validated by yourself),
run your piece of code and just check for any differences between
the reference files and the generated output - not very
elegant, but should work, e.g.
def test_external_program
call_external_program(outfile)
assert(!system(“diff #{outfile} #{referencefile} > /dev/null”))
end
HTH & kind regards
frank
···
–
Frank Schmitt
quattro research GmbH
e-mail: schmitt NO at SPAM quattro-research !@! dot com
To mock what? Just write a file and run a checksum on it, right?
Use a Mock to test.
what time is it
releasing resources
pseudo-random numbers
without really weird side-effects
expensive or slow hardware
modules that depend on modules that don’t exist yet, which you can’t
start
3rd party modules that can’t Get everything they Set
responses to failing system calls.
Writing and reading a modern file won’t get farther than the memory buffers,
so “slow hardware” doesn’t apply.
Well, I know the basis of unit testing but not of mocking. Thanks for
the indications. Well, that’s true that I don’t need anything more than
just random files with random content that will be randomly modified or
not, and tests will be done on the functions that process them in
various ways (checksum for example).
But the fact is I have no idea where to begin such a thing, I mean the
creation of random files with random content… and if I could randomly
generate a random directory tree with all those random files, it would
be even better.
Can someone help me, please?