Hi, all: I have some idea to test instrument. For example, if we would like to test Instrumentation.addTransformerwill throw NullPointerException if the argument is null, we can first write a TestInstrument with premain function.
import java.lang.instrument.Instrumentation; public class TestInstrument { public static void premain(String agentArgs, Instrumentation inst) { try { inst.addTransformer(null); } catch(NullPointerException e) { //failed, we set error code System.exit(1); } } } Normally, the VM will exit with zero as it return value if there is no exception occurs in main class. then, we might write an JUnit Test: public void test() throws Exception { Process process = Runtime.getRuntime().exec("java -javaagent Test.jarTest"); //if premain runs as we expected, the exit code is zero. assertEquals(0,process.waitFor()); } (Besides,Test is an ordinary class with a main function that will not throw error. Test.jar with the manifest to denote the class of TestInstrument as the premain class.} Is it all right? :) On 8/7/06, Jimmy, Jing Lv <[EMAIL PROTECTED]> wrote:
Geir Magnusson Jr wrote: > > Jimmy, Jing Lv wrote: >> Richard Liang wrote: >>> >>> Jimmy, Jing Lv wrote: >>>> Hi, >>>> >>>> As it is hard to write unit test for package instrument, I now >>>> have an idea: write down some documents for details of non-unit test >>>> cases for instrument. The detail of such test cases contain: >>> Do you mean it's hard to *write* unit test or it's hard to integrate >>> the tests with Harmony build system? >>> >> Hard to write unit test, so record them in some document may be a better >> way :) > > Why is it hard to create unit tests? > To test java.lang.instrument, mostly we need to start up a new VM to see its behavior. Its function(premain, etc) may be run before most classes loaded, and almost all exceptions will cause VM abort. And the result is hard to be checked automatic. What's more, extra java/c code is needed for the test. One thought was that we can use exec("java commands") in junit(is that OK to run exec in tests?), but how to check its output is still a problem. I'll put unit test if any, but I believe most necessary and important tests are non-unit tests. >>>> 1. The test run on which platform, including special environment; >>>> 2. The test description; >>>> 3. How to run test (command line, etc.); >>>> 4. test result; >>>> 5. resource (or links) for tests, including c/java code for test if any. >>>> >>>> I hope ensure the code quality in this way. Like unit test, such >>>> tests can be checked and re-run for regression, though un-automatically. >>>> >>>> And I'll put them in Harmony-wiki[1], and any test-description is >>>> welcome!. (Geir, I've found an advancement of wiki :) ) >>>> >>>> Any suggestions? :) >>>> >>>> [1]http://wiki.apache.org/harmony/INSTRUMENT >>>> >>>>> Geir Magnusson Jr wrote: >>>>> Never appeal to me using a Wiki as an authority :) It's like finding >>>>> something written in chalk on the sidewalk. >>>>> >>>>> However, if you had pointed out >>>>> >>>>> http://incubator.apache.org/harmony/auth_cont_quest.html >>>>> >>>>> I'd have agreed w/o having the opportunity to make fun of the Wiki. >>>>> >>>>> So I agree :) >>>>> >>>>> geir >>>> >> > > --------------------------------------------------------------------- > Terms of use : http://incubator.apache.org/harmony/mailing.html > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Best Regards! Jimmy, Jing Lv China Software Development Lab, IBM --------------------------------------------------------------------- Terms of use : http://incubator.apache.org/harmony/mailing.html To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
-- Leo Li China Software Development Lab, IBM