The following Python decorators produce Java annotations and correct signatures. For example the Java annotation Before corresponds to the Before decorator in Jython which is defined as
Before = annotation.extract(Before)(signature("public void _()")
Annotations on static method like BeforeClass are defined as
BeforeClass = annotation.extract(BeforeClass)(signature(“public static void _()”)
Following annotations are supported
The Ignore decorator is defined as
An appropriate signature has still to be added.
A simple test runner called testClasses was implemented. It uses traceback extraction to analyze Python exceptions and writes failure messages to stdout.
Parameters: | testclass – a sequence of Jython classes. All of them have to be decorated by jannotations.JavaClass. At least one method decorated with @test must be implemented. Otherwise test initialization fails and a ValueError exception is raised. |
---|
Example:
from jynx.lib.junit import*
from java.lang import Object
from jynx.jannotations import JavaClass
@JavaClass
class TestClass(Object):
@BeforeClass
def once(cls):
print "\nRun 'TestClass' tests ..."
@Test
def nullTest1(self):
assertTrue("length of empty list is not 0", len([]) != 0)
Running the TestClass with the testClasses runner
testClasses(TestClass)
yields following result
Run 'TestClass' tests ...
There was 1 failure:
1) nullTest1(TestClassBase)
java.lang.AssertionError: length of empty list is not 0
...
assertTrue("length of empty list is not 0", len([]) != 0)
...
at C:\lang\Jython\jython2.5rc4\Lib\site-packages\jynx\tests\test_jannotations.py : 48