DSpec / Templates + Delegates
Chris Mueller
ruunhb at googlemail.com
Wed Mar 31 03:16:10 PDT 2010
bearophile:
> I think that follows the type-II solution (the worst one) I have explained here:
> http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=107997
> (Thank you for your code and work, the worst solution is often better than no solution.)
>
I enjoyed reading your article and i agree with you about the current
Unittest-situation. If i remember my time working with other Unittesting
Frameworks in other languages, i was always annoyed in the beginning to
find out how to setup the tests and especially it's test execution.
Often it was more comfortable to rely on some buildsystems, which
already configured an automatic way. Though i doesn't like it to be
depending on a specific buildsystem.
Walters approach to implement unittests into the compiler, is also in my
opinion the most user-friendly way for developers to run unittest and
avoids the annoying and time-consuming configuration management. (Though
the D language give a great help to locate specific classes thanks to
ModuleInfo struct and makes it eas implementing a testrunner in compare
of other programming languages)
Thanks to the article i decided to move the dspec execution into the
unittest environment (it's also already working now) in hope to make the
configuration and test execution more simpler. I also agree that
developers shouldn't waste much time in the setup and API of a
unittesting framework, because it's only a tool for development.
Unfortanetly, i don't know a way to get commandline arguments which
would offers to configure a unittest framework. I can indeed catch the
arguments in the main function, but the unittest code is already
executed before the main function will be invoked. A trivial workaround
could be probably using a configuration file, which can be located and
accessed by dspec framework.
Masahiro Nakagawa:
> I read sources. I have something on my chest.
>
> - ruun package
> Umm...need?
>
It's surely not needed :) I already moved all modules to a simple dspec
package.
> - import ruun.dspec.Spec; import ruun.dspec.Should;
> I think ruun.dspec.Spec should uses "public import" for Should module.
> Is there a case that spec empties in it! ?
>
I know other unittest frameworks, that offers different implementation
for assertions / expectations and the developer can chose one.
But setting Should.d to a public import would offer a standard
implementation that is always accessible. Of course, this is a good idea.
> - Spec methods
> Why final? How can I create custom Spec?
>
Is not needed anymore, because the Spec class is removed and the spec
methods are moved to a single module now in order to get executed in a
dmd unittest environment. (Though it won't also offer creating custom
Specs).
Thank you very much for your code review.
If someone want to test dspec, be warned the buildscript (Rakefile) can
maybe fail on Linux or Mac. I haven't test it yet on that
plattforms.
Jacob Carlborg:
> int[] array = [1, 2, 3, 4];
> int b = 10;
>
> array.each in (int item) {
> writefln("%d", item + b);
> };
>
You are right :) I like it very much.
Chris Mueller
--
ruunhb at googlemail.com
http://ruuns.de/blog/
More information about the Digitalmars-d
mailing list