summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/examples/Test.java
diff options
context:
space:
mode:
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/examples/Test.java')
-rw-r--r--Master/Reference Architectures and Patterns/hjp5/examples/Test.java82
1 files changed, 82 insertions, 0 deletions
diff --git a/Master/Reference Architectures and Patterns/hjp5/examples/Test.java b/Master/Reference Architectures and Patterns/hjp5/examples/Test.java
new file mode 100644
index 0000000..e1c90c3
--- /dev/null
+++ b/Master/Reference Architectures and Patterns/hjp5/examples/Test.java
@@ -0,0 +1,82 @@
+/* Test.java */
+
+import java.lang.reflect.*;
+
+public class Test
+{
+ public static Object createTestObject(String name)
+ {
+ //Klassennamen zusammenbauen
+ int pos = name.lastIndexOf('.');
+ if (pos == -1) {
+ name = "Test" + name;
+ } else {
+ name = name.substring(0, pos + 1) + "Test" +
+ name.substring(pos + 1);
+ }
+ //Klasse laden
+ Object ret = null;
+ try {
+ Class testclass = Class.forName(name);
+ //Testobjekt instanzieren
+ System.out.println("==============================");
+ System.out.println("Instanzieren von: " + name);
+ System.out.println("--");
+ ret = testclass.newInstance();
+ } catch (ClassNotFoundException e) {
+ System.err.println("Kann Klasse nicht laden: " + name);
+ } catch (InstantiationException e) {
+ System.err.println("Fehler beim Instanzieren: " + name);
+ } catch (IllegalAccessException e) {
+ System.err.println("Unerlaubter Zugriff auf: " + name);
+ }
+ return ret;
+ }
+
+ public static void runTests(Object tester)
+ {
+ Class clazz = tester.getClass();
+ Method[] methods = clazz.getMethods();
+ int cnt = 0;
+ for (int i = 0; i < methods.length; ++i) {
+ //Methodenname muss mit "test" anfangen
+ String name = methods[i].getName();
+ if (!name.startsWith("test")) {
+ continue;
+ }
+ //Methode muss parameterlos sein
+ Class[] paras = methods[i].getParameterTypes();
+ if (paras.length > 0) {
+ continue;
+ }
+ //Methode darf nicht static sein
+ int modifiers = methods[i].getModifiers();
+ if (Modifier.isStatic(modifiers)) {
+ continue;
+ }
+ //Nun kann die Methode aufgerufen werden
+ ++cnt;
+ System.out.println("==============================");
+ System.out.println("Aufgerufen wird: " + name);
+ System.out.println("--");
+ try {
+ methods[i].invoke(tester, new Object[0]);
+ } catch (Exception e) {
+ System.err.println(e.toString());
+ }
+ }
+ if (cnt <= 0) {
+ System.out.println("Keine Testmethoden gefunden");
+ }
+ }
+
+ public static void main(String[] args)
+ {
+ if (args.length <= 0) {
+ System.err.println("Aufruf: java Test <KlassenName>");
+ System.exit(1);
+ }
+ Object tester = createTestObject(args[0]);
+ runTests(tester);
+ }
+} \ No newline at end of file