diff --git a/CMakeLists.txt b/CMakeLists.txt
index bcf0bb1..5280df2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -183,6 +183,6 @@ if (UNIX)
 endif()
 
 if (UNIX)
-    add_test(TestJavaWrapper ./testJavaWrapper.sh "${PROJECT_BINARY_DIR}")
+    add_test(TestJavaWrapper ./testJavaWrapper.sh "${CMAKE_CURRENT_SOURCE_DIR}" "${PROJECT_BINARY_DIR}")
     add_test(TestPythonWrapper ./testPythonWrapper.sh "${PROJECT_BINARY_DIR}")
 endif ()
diff --git a/morfeusz/wrappers/java/CMakeLists.txt b/morfeusz/wrappers/java/CMakeLists.txt
index 112c3ed..5666350 100644
--- a/morfeusz/wrappers/java/CMakeLists.txt
+++ b/morfeusz/wrappers/java/CMakeLists.txt
@@ -10,8 +10,9 @@ include_directories (${CMAKE_SOURCE_DIR}/morfeusz)
 
 set (SWIG_JAVA_OUTFILE "${CMAKE_CURRENT_BINARY_DIR}/swigJAVA.cpp")
 file (COPY pl DESTINATION .)
-file (COPY JMorfeuszTest DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
+
 set (JAVA_SRC_DIR "${CMAKE_CURRENT_BINARY_DIR}/pl/waw/ipipan/morfeusz")
+
 add_custom_command (
     OUTPUT ${SWIG_JAVA_OUTFILE}
     COMMAND swig -java -c++ -package pl.waw.ipipan.morfeusz  -o ${SWIG_JAVA_OUTFILE} -outdir ${JAVA_SRC_DIR} ${CMAKE_SOURCE_DIR}/morfeusz/wrappers/morfeusz.i
@@ -19,6 +20,7 @@ add_custom_command (
 )
 add_custom_target(generate-java-wrapper ALL
     DEPENDS ${SWIG_JAVA_OUTFILE})
+
 add_library (libjmorfeusz SHARED ${SWIG_JAVA_OUTFILE})
 add_dependencies (libjmorfeusz generate_java_wrapper)
 set_target_properties (libjmorfeusz PROPERTIES OUTPUT_NAME "jmorfeusz")
@@ -58,17 +60,6 @@ add_jar (jmorfeusz
     ENTRY_POINT pl/waw/ipipan/morfeusz/app/App
     DEPENDS libjmorfeusz generate-java-wrapper)
 
-#create_javadoc(jmorfeusz_javadoc
-#  PACKAGES pl.waw.ipipan.morfeusz
-#  SOURCEPATH "${CMAKE_CURRENT_BINARY_DIR}"
-#  CLASSPATH "${CMAKE_JAVA_INCLUDE_PATH}"
-#  WINDOWTITLE "JMorfeusz - Morfeusz Java binding"
-#  DOCTITLE "<h1>JMorfeusz</h1>"
-#  AUTHOR TRUE
-#  USE TRUE
-#  VERSION TRUE
-#  DEPENDS jmorfeusz generate_java_wrapper)
-
 add_custom_target(generate-javadoc ALL
     COMMAND javadoc
         -d "${CMAKE_CURRENT_BINARY_DIR}/jmorfeusz_javadoc"
diff --git a/morfeusz/wrappers/java/JMorfeuszTest.java b/morfeusz/wrappers/java/JMorfeuszTest.java
new file mode 100644
index 0000000..a298cf7
--- /dev/null
+++ b/morfeusz/wrappers/java/JMorfeuszTest.java
@@ -0,0 +1,108 @@
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.NoSuchElementException;
+import org.junit.After;
+import org.junit.AfterClass;
+import static org.junit.Assert.*;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import pl.waw.ipipan.morfeusz.Morfeusz;
+import pl.waw.ipipan.morfeusz.MorfeuszException;
+import pl.waw.ipipan.morfeusz.MorphInterpretation;
+import pl.waw.ipipan.morfeusz.ResultsIterator;
+
+/**
+ *
+ * @author mlenart
+ */
+public class JMorfeuszTest {
+
+    private Morfeusz morfeusz;
+
+    public JMorfeuszTest() {
+    }
+
+    @BeforeClass
+    public static void setUpClass() {
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+    }
+
+    @Before
+    public void setUp() {
+        morfeusz = Morfeusz.createInstance();
+    }
+
+    @After
+    public void tearDown() {
+    }
+
+    @Test
+    public void testAnalyzeAsList() {
+        List<MorphInterpretation> res = morfeusz.analyseAsList("Aaaa żżżż");
+        assertEquals(2, res.size());
+        assertEquals("Aaaa", res.get(0).getOrth());
+        assertEquals("żżżż", res.get(1).getOrth());
+        try {
+            res.get(2);
+            fail();
+        }
+        catch (IndexOutOfBoundsException ex) {
+            
+        }
+    }
+    
+    @Test
+    public void testAnalyzeAsIterator() {
+        ResultsIterator it = morfeusz.analyseAsIterator("Aaaa żżżż");
+        assertTrue(it.hasNext());
+        assertEquals("Aaaa", it.next().getOrth());
+        assertTrue(it.hasNext());
+        assertEquals("żżżż", it.next().getOrth());
+        try {
+            it.next();
+            fail();
+        }
+        catch (NoSuchElementException ex) {
+            
+        }
+    }
+
+    @Test(expected = MorfeuszException.class)
+    public void testInvalidAgglOption() {
+        morfeusz.setAggl("XXXXYYYYZZZZ");
+    }
+    
+    @Test(expected = MorfeuszException.class)
+    public void testInvalidPraetOption() {
+        morfeusz.setPraet("XXXXYYYYZZZZ");
+    }
+
+    @Test(expected = MorfeuszException.class)
+    public void testInvalidGenerate() {
+        morfeusz.generate("AAAA BBBB");
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void testNullCaseHandling() {
+        morfeusz.setCaseHandling(null);
+    }
+
+    @Test(expected = IOException.class)
+    public void testNonExistingDictionaryFile() throws IOException {
+        File tmpFile = File.createTempFile("morfeusz_invalid_dict", ".test");
+        tmpFile.delete();
+        morfeusz.setGeneratorDictionary(tmpFile.getAbsolutePath());
+    }
+
+    @Test(expected = IOException.class)
+    public void testInvalidDictionaryFile() throws IOException {
+        File tmpFile = File.createTempFile("morfeusz_invalid_dict", ".test");
+        morfeusz.setGeneratorDictionary(tmpFile.getAbsolutePath());
+    }
+}
diff --git a/morfeusz/wrappers/java/test_lib/junit.jar b/morfeusz/wrappers/java/test_lib/junit.jar
new file mode 100644
index 0000000..954851e
--- /dev/null
+++ b/morfeusz/wrappers/java/test_lib/junit.jar
diff --git a/testJavaWrapper.sh b/testJavaWrapper.sh
index bd7aa62..eac1c74 100755
--- a/testJavaWrapper.sh
+++ b/testJavaWrapper.sh
@@ -1,5 +1,11 @@
 #!/bin/bash
 echo "testing java wrapper"
-PROJECT_BINARY_DIR=$1
-cd morfeusz/wrappers/java/JMorfeuszTest
-LD_LIBRARY_PATH="$PROJECT_BINARY_DIR/morfeusz:$PROJECT_BINARY_DIR/morfeusz/wrappers/java" ant -lib "$PROJECT_BINARY_DIR/morfeusz/wrappers/java" test
+PROJECT_SRC_DIR=$1
+PROJECT_BINARY_DIR=$2
+TEST_DIR="$PROJECT_BINARY_DIR/morfeusz/wrappers/java"
+JUNIT_JAR="$PROJECT_SRC_DIR/morfeusz/wrappers/java/test_lib/junit.jar"
+JMORFEUSZ_JAR="$TEST_DIR/jmorfeusz.jar"
+JAVA_TEST_FILE="$PROJECT_SRC_DIR/morfeusz/wrappers/java/JMorfeuszTest.java"
+
+LD_LIBRARY_PATH="$PROJECT_BINARY_DIR/morfeusz:$TEST_DIR" javac -cp "$JUNIT_JAR:$JMORFEUSZ_JAR" -d "$TEST_DIR" "$JAVA_TEST_FILE"
+LD_LIBRARY_PATH="$PROJECT_BINARY_DIR/morfeusz:$TEST_DIR" java -cp "$JUNIT_JAR:$JMORFEUSZ_JAR:$TEST_DIR" org.junit.runner.JUnitCore JMorfeuszTest