On Tue, Mar 9, 2010 at 10:45 PM, Charles Lee <littlee1...@gmail.com> wrote: > +1. > > @Platform is the specified annotation or is the annotation used in junit4?
Platform and Exclude would be a custom annotations - perhaps org.apache.harmony.test.Platform. Then there'd be a custom runner or filter that's used to launch JUnit and affect what tests are run. > > On Wed, Mar 10, 2010 at 11:34 AM, Nathan Beyer <ndbe...@apache.org> wrote: > >> On Tue, Mar 9, 2010 at 8:50 PM, Charles Lee <littlee1...@gmail.com> wrote: >> > That's great. But most old test case is in JUnit 3.8 style. We can follow >> > the latest junit when we add the new test cases. What about the old ones? >> >> We've been using JUnit 4 runners for a long time now. JUnit 4 style >> tests could be added at any time and will run perfectly fine with the >> other JUnit 3.8 style tests. The runner/launcher would have to be >> customized to handle this stuff I'm proposing, but we'd continue to >> run both styles of tests. >> >> -Nathan >> >> > >> > On Wed, Mar 10, 2010 at 9:01 AM, Nathan Beyer <ndbe...@apache.org> >> wrote: >> > >> >> I've been experimenting with JUnit4 extensions in an attempt to find a >> >> more simple approach to our basic testing needs. The two major >> >> requirements that I see in Harmony's test infrastructure (at least the >> >> classlib stuff) are - exclusions and platform-specific tests. (I'm >> >> ignoring the bootstrap-classpath stuff for now.) To handle these >> >> today, we have exclusion files, which are loaded and used to exclude >> >> certain files and then we branch the test folders by platform. Each >> >> of these has issues - exclusions are skipping whole files, not just >> >> specific failing tests; exclusions aren't well reported on; test files >> >> in multiple branches can have duplicate code, etc. >> >> >> >> One concept I've been working with is using annotations to describe >> >> the tests for the purposes of exclusions and for platform definition. >> >> The annotations can then be utilized in many ways via JUnit - method >> >> rules, request processing filters and others. Here's an example of how >> >> the tests might look. >> >> >> >> class FileTest { >> >> �...@test >> >> �...@platform(os="windows") >> >> public void testSomethingOnWindows { } >> >> >> >> �...@test >> >> �...@platform(os="linux", arch="x86_64") >> >> public void testSomethingOnLinuxX86_64 {} >> >> >> >> �...@test >> >> �...@exclude(os="windows",vm="drlvm") >> >> public void testSomethingExcludedOnWindowsDRLVM {} >> >> } >> >> >> >> Thoughts? Comments? >> >> >> > >> > >> > >> > -- >> > Yours sincerely, >> > Charles Lee >> > >> > > > > -- > Yours sincerely, > Charles Lee >