public static void call_harness(String folder_path) { Console.Write("***************************************"); Console.Write("\n ------- Inside Test Harness----------"); Console.Write("\n *************************************\n"); DllLoaderExec loader = new DllLoaderExec(); DllLoaderExec.testersLocation = folder_path; DllLoaderExec.testersLocation = Path.GetFullPath(DllLoaderExec.testersLocation); Console.Write("\n Loading Test Modules from:\n {0}\n", Path.GetFullPath(@"../../../Test_Harness/Local_Storage")); // run load and tests string result = loader.loadAndExerciseTesters(); Console.Write("\n\n {0}", result); Console.Write("\n\n"); }
//----< load assemblies from testersLocation and run their tests >----- string loadAndExerciseTesters() { AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.AssemblyResolve += new ResolveEventHandler(LoadFromComponentLibFolder); try { DllLoaderExec loader = new DllLoaderExec(); // load each assembly found in testersLocation string[] files = Directory.GetFiles(testersLocation, "*.dll"); if (files.Count() > 0) { foreach (string file in files) { String output = ""; if (!tested_dll_files.Contains(file)) { Assembly asm = Assembly.LoadFile(file); string fileName = Path.GetFileName(file); Console.Write("\n Loaded the file : {0} ", fileName); output = output + Path.GetFileNameWithoutExtension(fileName) + " : "; // exercise each tester found in assembly Type[] types = asm.GetTypes(); foreach (Type t in types) { // if type supports ITest interface then run test if (t.GetInterface("DllLoaderDemo.ITest", true) != null) { if (!loader.runSimulatedTest(t, asm, output)) { Console.Write("\n test {0} failed to run", t.ToString()); } } } tested_dll_files.Add(file); } else { } } } else { Console.Write("***********************************************************"); Console.WriteLine("-------------No files available to test---------------"); Console.Write("***********************************************************"); } } catch (Exception ex) { return(ex.Message); } return("Simulated Testing completed"); }