1 #region Copyright (c) 2002, James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Philip A. Craig
2 /************************************************************************************
4 ' Copyright © 2002 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov
5 ' Copyright © 2000-2002 Philip A. Craig
7 ' This software is provided 'as-is', without any express or implied warranty. In no
8 ' event will the authors be held liable for any damages arising from the use of this
11 ' Permission is granted to anyone to use this software for any purpose, including
12 ' commercial applications, and to alter it and redistribute it freely, subject to the
13 ' following restrictions:
15 ' 1. The origin of this software must not be misrepresented; you must not claim that
16 ' you wrote the original software. If you use this software in a product, an
17 ' acknowledgment (see the following) in the product documentation is required.
19 ' Portions Copyright © 2002 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov
20 ' or Copyright © 2000-2002 Philip A. Craig
22 ' 2. Altered source versions must be plainly marked as such, and must not be
23 ' misrepresented as being the original software.
25 ' 3. This notice may not be removed or altered from any source distribution.
27 '***********************************************************************************/
33 using System.Collections;
34 using System.Reflection;
39 public abstract class Test : LongLivingMarshalByRefObject, TestInfo
41 private string fullName;
42 private string testName;
43 private bool shouldRun;
44 private string ignoreReason;
46 protected Test(string pathName, string testName)
48 fullName = pathName + "." + testName;
49 this.testName = testName;
53 public string IgnoreReason
55 get { return ignoreReason; }
56 set { ignoreReason = value; }
61 get { return shouldRun; }
62 set { shouldRun = value; }
65 public Test(string name)
67 fullName = testName = name;
70 public string FullName
72 get { return fullName; }
77 get { return testName; }
80 public abstract int CountTestCases { get; }
81 public abstract bool IsSuite { get; }
82 public abstract ArrayList Tests { get; }
84 public abstract TestResult Run(EventListener listener);
86 protected MethodInfo FindMethodByAttribute(object fixture, Type type)
88 foreach(MethodInfo method in fixture.GetType().GetMethods(BindingFlags.Public|BindingFlags.Instance|BindingFlags.NonPublic))
90 if(method.IsDefined(type,true))
98 protected void InvokeMethod(MethodInfo method, object fixture)
104 method.Invoke(fixture, null);
106 catch(TargetInvocationException e)
108 Exception inner = e.InnerException;
109 throw new NunitException("Rethrown",inner);