From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/examples/Test.java | 82 ++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/examples/Test.java (limited to 'Master/Reference Architectures and Patterns/hjp5/examples/Test.java') 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 "); + System.exit(1); + } + Object tester = createTestObject(args[0]); + runTests(tester); + } +} \ No newline at end of file -- cgit v1.2.3