Hello,
JUnit is a defacto standard in Java circle, which means it has a rich
ecosystem. I would like to "hijack" this ecosystem for other
languages/environments than Java. I actually did something for running
Javascript tests with htmlunit and would now like to to do the same
thing for C/C++ tests: use JUnit to drive and report test executions
that encapsulates native tests.
I am no sure this is a good idea, but it kind of worked for my JS
tests. For the C tests, I am confronted with an issue probably due to
my misunderstanding of JUnit architecture: It seems that Runner
instances need Class objects to work on, being passed them by the
framework. But of course, in my particular case I do not have specific
Class objects to work with as tests are written in native C/C++ code.
Could somebody point me to the right direction, or give me some good
reasons to forget about this ?
Why not use an existing C/C++ framework? Gtest is my
current favorite.
Charlie
> -----Original Message-----
> From: junit@yahoogroups.com [mailto:junit@yahoogroups.com] On
> Behalf Of Arnaud Bailly
> Sent: Friday, July 03, 2009 8:16 AM
> To: junit
> Subject: [junit] Hijacking JUnit infrastructure
>
> Hello,
> JUnit is a defacto standard in Java circle, which means it
> has a rich ecosystem. I would like to "hijack" this ecosystem
> for other languages/environments than Java. I actually did
> something for running Javascript tests with htmlunit and
> would now like to to do the same thing for C/C++ tests: use
> JUnit to drive and report test executions that encapsulates
> native tests.
>
> I am no sure this is a good idea, but it kind of worked for
> my JS tests. For the C tests, I am confronted with an issue
> probably due to my misunderstanding of JUnit architecture: It
> seems that Runner instances need Class objects to work on,
> being passed them by the framework. But of course, in my
> particular case I do not have specific Class objects to work
> with as tests are written in native C/C++ code.
>
> Could somebody point me to the right direction, or give me
> some good reasons to forget about this ?
>
> Thanks
>
> Arnaud
>
>
> ------------------------------------
>
> Yahoo! Groups Links
>
>
>
>
Thanks for your answer,
We use a framework for writing and executing tests (eg. at present
CUnit and CPPUnit). But we are in a mixed language environment and
would like to be able to integrate smoothly my native tests w/ java
build system (eg. maven, CI).
2009/7/6 Arnaud Bailly <arnaud.oqube@...>:
> Thanks for your answer,
> We use a framework for writing and executing tests (eg. at present
> CUnit and CPPUnit). But we are in a mixed language environment and
> would like to be able to integrate smoothly my native tests w/ java
> build system (eg. maven, CI).
You could look at the Test Anything Protocol, which is used to gather
results from tests written in different languages. There is a Java
implementation.
On Fri, Jul 3, 2009 at 11:16 AM, Arnaud Bailly<arnaud.oqube@...> wrote:
> Hello,
> JUnit is a defacto standard in Java circle, which means it has a rich
> ecosystem. I would like to "hijack" this ecosystem for other
> languages/environments than Java. I actually did something for running
> Javascript tests with htmlunit and would now like to to do the same
> thing for C/C++ tests: use JUnit to drive and report test executions
> that encapsulates native tests.
>
> I am no sure this is a good idea, but it kind of worked for my JS
> tests. For the C tests, I am confronted with an issue probably due to
> my misunderstanding of JUnit architecture: It seems that Runner
> instances need Class objects to work on, being passed them by the
> framework. But of course, in my particular case I do not have specific
> Class objects to work with as tests are written in native C/C++ code.
>
> Could somebody point me to the right direction, or give me some good
> reasons to forget about this ?
Arnaud,
There are definitely ways to do what you want. Runner doesn't require
a Java class, it just happens that almost all of the provided
subclasses do have a Java class.
How are you planning to run the overall test suite? Depending on that
answer, it may work best to have a "stand-in" Java class that serves
as the root of your C++ suite.
hello david,
thanks for your encouraging mail. Right now, I just used the Result
and RunListener classes and interfaces to manage feedback from my
tests, but the basic idea is that I would run JUnit with some custom
runner that would discover "test classes" that would report results.
In a previous JS framework I wrote, the wrapper classes were defined
statically (ie. each known html test was associated to a defined
JUnit4 test class) and run with a custom Runner deriving from
JUnit4BlockRunner (and making use of parameterized btw).
I could have a java class "proxy" that would report results on a given
runner. Is that what you are thinking of ?
I have something similar for antunit (unit test written as ant script). I
wanted to integrate antunit test with the IDE (mostly to run the ant tasks
in a java debugger).
I have written a Runner (AntUnitSuiteRunner) that you can use to run a
'proxy' that can be detected by your IDE.
Then, there is a simple protocal between my runner and the 'proxy' class.
It looks like this :
@RunWith(AntUnitSuiteRunner.class)
public class EatYourOwnDogFoodTest {
public static TestSuite suite() {
File script = new File("src/etc/testcases/antunit/java-io.xml");
return new AntUnitSuite(script, EatYourOwnDogFoodTest.class);
}
>
>
> hello david,
> thanks for your encouraging mail. Right now, I just used the Result
> and RunListener classes and interfaces to manage feedback from my
> tests, but the basic idea is that I would run JUnit with some custom
> runner that would discover "test classes" that would report results.
>
> In a previous JS framework I wrote, the wrapper classes were defined
> statically (ie. each known html test was associated to a defined
> JUnit4 test class) and run with a custom Runner deriving from
> JUnit4BlockRunner (and making use of parameterized btw).
>
> I could have a java class "proxy" that would report results on a given
> runner. Is that what you are thinking of ?
>
> Arnaud
>
>
[Non-text portions of this message have been removed]