Hi Philip,
The UIMA Test cases do some of this, but you may have things which
advance beyond what was done there. A good way to see is to look in our
SVN at the tests. A good one to look at is
uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngine_implTest.java
We frequently use two kinds of setup - one involves creating a resource
which is the Analysis Engine XML descriptor, and reading it, and the
other which programmatically builds this.
An example of the first from that above test is:
XMLInputSource in = new XMLInputSource(JUnitExtension
.getFile("TextAnalysisEngineImplTest/AggregateTaeForMergeTest.xml"));
AnalysisEngineDescription desc =
UIMAFramework.getXMLParser().parseAnalysisEngineDescription(in);
AggregateAnalysisEngine_impl ae = new AggregateAnalysisEngine_impl();
An example of programmically constructing one:
AnalysisEngineDescription primitiveDesc = new
AnalysisEngineDescription_impl();
primitiveDesc.setPrimitive(true);
primitiveDesc
.setAnnotatorImplementationName("org.apache.uima.analysis_engine.impl.TestAnnotator");
primitiveDesc.getMetaData().setName("Test Primitive TAE");
Capability cap = new Capability_impl();
cap.addOutputType("NamedEntity", true);
cap.addOutputType("DocumentStructure", true);
Capability[] caps = new Capability[] {cap};
primitiveDesc.getAnalysisEngineMetaData().setCapabilities(caps);
AnalysisEngine ae =
UIMAFramework.produceAnalysisEngine(primitiveDesc);
As you can see, these are somewhat verbose...
We also have some utilities in uimaj-test-util; perhaps that might be a
good spot to add to.
-Marshall
Philip Ogren wrote:
>
> We have assembled some misc. utility methods that make unit testing
> easier to support our UIMA-based project ClearTK. I have come across
> several scenarios now where I wish that this code was available as a
> separate project so that I don't have to create a dependency on our
> entire ClearTK project when I only need a few utility classes for
> writing unit tests. So, I am thinking about spinning off a separate
> project that just has this unit-test specific code in it. There
> really isn't that much code there (I think it's all shoved into one
> class at the moment) and would really be just a seed for getting
> something started.
> One thing the code does is simplify initialization of UIMA components
> programmatically such that you don't have to use descriptor files in
> your unit tests. A unit test might start with something like:
>
> AnalysisEngine engine = TestsUtil.getAnalysisEngine(MyAnnotator.class,
> TestsUtil.getTypeSystem(Document.class, Token.class, Sentence.class));
> JCas jCas = engine.newJCas();
>
> and then you can go about populating the JCas and testing its contents.
> The current code is located here:
>
> http://code.google.com/p/cleartk/source/browse/trunk/test/src/org/cleartk/util/TestsUtil.java
>
>
> Some example unit tests based on this code can be found here:
>
> http://code.google.com/p/cleartk/source/browse/trunk/test/src/org/cleartk/example/ExamplePOSHandlerTests.java
>
>
> Is this something that is of interest? Is there already code in UIMA
> that helps with this sort of thing?
> Thanks,
> Philip
>
>
>