Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Die Metainformationen werden jedoch bei Nuclos konfiguriert (und liegen daher nicht in Code-Form vor). Daher war es an dieser Stellen notwendig, speziell für Nuclos Unit Tests einen speziellen MetaProvider (org.nuclos.server.common.TestMetaProvider)  zur Verfügung zu stellen. Dieser TestMetaProvider liest die Metainformationen in Form einer XML Datei, von einem Nuclos Server zur Runtime mittels JMX Operation (MetaProvider#dumpAllEntities(boolean)) erzeugt wurde. Durch diesen Trick stehen 'richtige' Metainformationen einer Nuclos Server Instanz auch für Unit Tests zur Verfügung.

TODO: Zeigen, wie man die XML Datei, mittels JMX dumped.

Ein Beispiel mit TestNG und Mockito

Im folgenden ein Überblick, wie man Unit Test in einer Extension mittels TestNG und Mockito aufsetzt.

Anpassung in pom.xml der Extension

Da Testabhängigkeiten in maven nicht so wie normale Abhängigkeiten vererbt werden, muss im pom.xml in jedem (Maven) Modul, welches Unit Tests verwenden möchte, folgendes bei den Abhängigkeiten ergänzt werden:

Codeblock
languagexml
title<extension-server>/pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    [...]

    <dependencies>

    [...]

        <!-- testing -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.kubek2k</groupId>
            <artifactId>springockito</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.kubek2k</groupId>
            <artifactId>springockito-annotations</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

    [...]

</project>

 

Erstellung von testng.xml

Für TestNG Unit Tests ist die Datei testng.xml verpflichtend. In ihr wir definiert, welche Tests während des CI Build standardmäßig ausgeführt werden. Um alle Tests auszuführen und Log4j für die Test zu konfigurien, kann die Datei wie folgt aussehen:

Codeblock
languagexml
title<extension-server>/testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false">
    <listeners>
        <listener class-name="de.bmw.fdm.testng.LoggingListener" />
    </listeners>
    <test name="Test">
        <packages>
            <package name=".*" />
        </packages>
    </test>
    <!-- Test -->
</suite>
<!-- Suite -->

 

(Optional) Log4j für Unit Tests konfigurien

 

Unit Test in TestNG