Myrna van Lunteren wrote:
On 4/18/06, *John H. Embretsen (JIRA)* <derby-dev@db.apache.org <mailto:derby-dev@db.apache.org>> wrote:

[snip - details and useprocess=false discussion]


    JUnit and useprocess=false:
    ----------------------------------------------------

    Some may be surprised to find that junit tests are run in a separate
    process by default (instead of being skipped) when useprocess=false.
    However, I think I see some advantages of doing it this way, so I
    accept (a bit reluctantly, perhaps) this behavior for now.

    In the patch I also find:

    -        if ( useprocess )
    +           // Always create a process if testType is junit,
    otherwise testRunner
    +           // would exit a suite prematurely, and we can't debug
    that anyway and
    +           // they should run quick anyway.
    +        if ( useprocess || (!useprocess && testType.equals("junit")))

    I'm not sure I understand/remember exactly why junit tests cannot be
    run with useprocess=false ( i.e. why "testRunner" (I assume this
    means junit.*ui.TestRunner) would exit a suite prematurely). Feel
    free to educate me on this subject (otherwise I guess I'll look into
    it myself when time permits) ;)

Yes, I was referring to junit.*ui.TestRunner. I wanted to enable as many test as possible when running useprocess=false, and I thought skipping the junit test would be an increasingly bad idea as we'd get more and more junit tests... So I experimented running the junit test as a separate process (I just copied how they're run when useprocess=true (the default)), the first junit test ran successfully and that was all that ran, the entore RunSuite process just stopped. I assumed that TestRunner must be doing a System.exit() somewhere. Maybe I was off with that conclusion/assumption...

I think you are correct with your conclusion/assumption. A quick grep of the JUnit source code (3.8.1), shows matches for System.exit in all of textui.TestRunner, swingui.TestRunner and awtui.TestRunner.

Since we would want a text/console based test runner, we may have to write our own if we want to run JUnit tests with useprocess=false. When looking at the source of textui.TestRunner, I don't think this would be a very different task. It might even be possible to do a quick hack, but I do not know if this is allowed according to the license (CPL) or if we want to do this.

Can anyone with knowledge of CPL (Common Public License - v 1.0) shed some light on what we can and can't do?



--
Kristian

I think for now, I will make the harness skip junit tests when useprocess=false. I'll double check the code to make sure there's no left-over comments suggesting they're getting run. Myrna

Reply via email to