[{TableOfContents}]

!! Introduction
Knowledge engineering with KnowWE is supported by a continuous integration framework, that allows to embed automated tests on the knowledge. These tests are executed on regular bases (triggers can be configured) and in case of failure the users are alerted. An overview about the history and the testing results in provided on a dashboard. This allows for a safe development process. The use of the existing CI features is described [here|Doc CIDashboard]

!! Create new tests
KnowWE provides an extension point to add new CITests, called ''CITest''. To create an extension of this kind the class [AbstractTest|https://isci.informatik.uni-wuerzburg.de/javadoc/d3web/de/d3web/testing/AbstractTest.html] which is an abstract implementation of the interface [Test|https://isci.informatik.uni-wuerzburg.de/javadoc/d3web/de/d3web/testing/Test.html] should be implemented. 

! Test object class

One method of the interface Test is getTestObjectClass(). It determines the class of the test object which the test is supposed to be executed on.
%%prettify
{{{
Class<T> getTestObjectClass();
}}}
/%

For example, if a test should run on wiki articles, the method should be implemented like this:
%%prettify
{{{
public Class<Article> getTestObjectClass()
}}}
/%


!! Description

Please implement the method getDescription() in a meaningful way, return a concise description about what this test is about. It will be used to generated the documentation table of all available tests of the system, c.f. [Doc CIDashboard].
%%prettify
{{{
String getDescription();
}}}
/%

!! Execute

The actual test processing is executed within the method execute(). The parameters are passed by a String array.
%%prettify
{{{
public static int execute(String[] args) throws IOException
}}}
/%


%%tags
howto
%