Web API Test to ensure public routes do not change

[TestFixture] public class RouteTestFixture { [Test] public void Routes_should_not_change() { const string good = @”all existing routes go here (hint run the test first then copy output to here); var goodRoutes = good.Split(Convert.ToChar(;)); var notFound = new List<string>(); var ass = Assembly.GetAssembly(typeof (EventStatisticsController)); var sb = new StringBuilder(); foreach (var type in ass.GetTypes()) { try { var members = type.GetMembers(); for (int i = 0; i < members.Length; i++) { // Display the attribute if it is of type MyAttribute. if (members[i].IsDefined(typeof (RouteAttribute), false)) { Object[] atts = members[i].GetCustomAttributes(typeof (RouteAttribute), false); for (int j = 0; j < atts.Length; j++) { var routeAttribute = (RouteAttribute)atts[j]; string route = routeAttribute.Template + @”/ + routeAttribute.Name; Console.WriteLine(route); sb.Append(route + ;); if (!goodRoutes.Contains(route)) { notFound.Add(route); } } } } } catch (Exception e) { Console.WriteLine(@”An exception occurred: {0}, e.Message); } } if (notFound.Any()) { Console.WriteLine(@”— MISSING ROUTES —); foreach (var nf in notFound) { Console.WriteLine(nf); } Assert.Fail(Missing Routes: + notFound.Count); } else { Assert.True(true, All routes matched); } Console.WriteLine(@”————————————————); Console.WriteLine(@”Match the following string for future tests); Console.WriteLine(sb.ToString()); } }