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

Reply via email to