<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jun 5, 2012, at 1:01 PM, David Janke wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">I just finished reading the blog post about the pre-release submodules feature, and I'm curious what you all think about the new "test" submodule that allows inline unit tests...<div><br></div><div>"The new raco test shell command runs the test submodule of a given module, so that raco test fish2.rkt checks that all the values of the fish list are numbers. The test submodule imports rackunit for its check form, but that import does not create a dependency on rackunit (which is a substantial library) for modules that import "fish2.rkt"; the dependency is only for the test submodule."</div>
<div>(<a href="http://blog.racket-lang.org/2012/06/submodules.html">http://blog.racket-lang.org/2012/06/submodules.html</a>)
</div><div><br></div><div>At first glance, the test submodule sounds like a cool idea, because your tests can help document your functions. But, I can also imagine files where the number of tests outnumber the lines of actual code. Plus, there's something to be said for keeping different parts of an application separate--tests vs. "work"</div>
<div><br></div><div>On the other hand, unless you explicitly run the tests, they are effectively just comments, so no real harm in having them interspersed with the rest of the code, right?</div><div><br></div><div>I'm fairly new to Racket and just wondering what the thinking is in the community. Inline unit tests pop up here and there in other languages (Python has doctest), but it's not really widespread. Seeing how it's going to be part of the Racket core, maybe it's a technique I should start using?</div></blockquote><div><br></div><div>My opinion:</div><div><br></div><div>It's very convenient to be able to place unit tests next to the functions that they test while developing code. I agree that you may want to refactor later, and gather the tests together. Submodules (and more specifically module+) allow both of these.</div><div><br></div><div>John</div><div><br></div><div><br></div></div></body></html>