diff --git a/TestRunner/MainWindow.xaml.cs b/TestRunner/MainWindow.xaml.cs index eaaa4ed..07a4530 100644 --- a/TestRunner/MainWindow.xaml.cs +++ b/TestRunner/MainWindow.xaml.cs @@ -30,10 +30,7 @@ namespace TestRunner private void ButtonBase_OnClick(object sender, RoutedEventArgs e) { - var testClass = new TestingLib.TestThePaymentDate(); - testClass.DateIs30DaysInFuture(); - testClass.ReturnsMondayIfProposedIsSaturday(); - testClass.ReturnsMondayIfProposedIsSunday(); + TestingLib.Assert.RunTests(); } } diff --git a/TestingLib/Assert.cs b/TestingLib/Assert.cs index b16baa4..e3e9df1 100644 --- a/TestingLib/Assert.cs +++ b/TestingLib/Assert.cs @@ -1,7 +1,10 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Net.Sockets; +using System.Reflection; using System.Runtime.CompilerServices; +using System.Linq; using System.Text; namespace TestingLib @@ -32,5 +35,24 @@ namespace TestingLib testInfo.MethodName = methodName; TestResults.Add(testInfo); } + + public static void RunTests() + { + foreach (MethodInfo method in GetTestMethods()) + { + var instanceOfTestClass = Activator.CreateInstance(method.DeclaringType); + method.Invoke(instanceOfTestClass, null); + } + } + private static List GetTestMethods() + { + var q = from t in Assembly.GetExecutingAssembly().GetTypes() + from m in t.GetMethods() + from att in m.GetCustomAttributes(true) + where att.GetType() == typeof(CheckThisMethod) + select m; + + return q.ToList(); + } } } diff --git a/TestingLib/CheckThisMethod.cs b/TestingLib/CheckThisMethod.cs new file mode 100644 index 0000000..0c81c7d --- /dev/null +++ b/TestingLib/CheckThisMethod.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace TestingLib +{ + [AttributeUsage(AttributeTargets.Method)] + public class CheckThisMethod : Attribute + { + } +} diff --git a/TestingLib/TestThePaymentDate.cs b/TestingLib/TestThePaymentDate.cs index 4065763..9d211db 100644 --- a/TestingLib/TestThePaymentDate.cs +++ b/TestingLib/TestThePaymentDate.cs @@ -7,6 +7,7 @@ namespace TestingLib { public class TestThePaymentDate { + [CheckThisMethod] public void DateIs30DaysInFuture() { var pd = new SUT.PaymentSystem.PaymentDate(); @@ -17,6 +18,7 @@ namespace TestingLib Assert.AreEqual(futureDate, sampleDate.AddDays(30), $"Expected date is not 30 days in the future."); } + [CheckThisMethod] public void ReturnsMondayIfProposedIsSunday() { @@ -26,6 +28,7 @@ namespace TestingLib var futureDate = pd.CalculateFuturePaymentDate(sampleDate); Assert.AreEqual(futureDate.DayOfWeek, DayOfWeek.Monday, $"Expected date is not Monday."); } + [CheckThisMethod] public void ReturnsMondayIfProposedIsSaturday() { var pd = new SUT.PaymentSystem.PaymentDate();