Browse Source

Fixed displaying non-test classes nested in test fixtures in unit testing pad.

pull/23/head
Tomasz Tretkowski 14 years ago
parent
commit
89faa5dd00
  1. 13
      src/AddIns/Analysis/UnitTesting/Src/NUnitTestFramework.cs
  2. 17
      src/AddIns/Analysis/UnitTesting/Test/Project/InnerClassInTestFixtureTests.cs

13
src/AddIns/Analysis/UnitTesting/Src/NUnitTestFramework.cs

@ -53,13 +53,20 @@ namespace ICSharpCode.UnitTesting
if (testAttributeName.IsEqual(attribute)) { if (testAttributeName.IsEqual(attribute)) {
return true; return true;
} }
} }
if (c.DeclaringType != null) }
return IsTestClass(c.DeclaringType);
while (c != null) {
if (HasTestMethod(c)) return true;
c = c.BaseClass;
} }
return false; return false;
} }
private bool HasTestMethod(IClass c) {
return GetTestMembersFor(c).Any();
}
static StringComparer GetNameComparer(IClass c) static StringComparer GetNameComparer(IClass c)
{ {
if (c != null) { if (c != null) {

17
src/AddIns/Analysis/UnitTesting/Test/Project/InnerClassInTestFixtureTests.cs

@ -23,9 +23,12 @@ namespace UnitTesting.Tests.Project
/// { /// {
/// } /// }
/// ///
/// [TestFixture]
/// public class InnerTestLevel2 { /// public class InnerTestLevel2 {
/// } /// }
/// } /// }
///
/// public class InnerBClass() {}
/// } /// }
/// ///
/// </summary> /// </summary>
@ -45,6 +48,7 @@ namespace UnitTesting.Tests.Project
//Add inner class nested in test class //Add inner class nested in test class
classNestedInInnerClass = new MockClass(projectContent, "MyTests.A.InnerATest.InnerTestLevel2", "MyTests.A+InnerATest+InnerTestLevel2", innerClass); classNestedInInnerClass = new MockClass(projectContent, "MyTests.A.InnerATest.InnerTestLevel2", "MyTests.A+InnerATest+InnerTestLevel2", innerClass);
classNestedInInnerClass.Attributes.Add(new MockAttribute("TestFixture"));
innerClass.InnerClasses.Add(classNestedInInnerClass); innerClass.InnerClasses.Add(classNestedInInnerClass);
} }
@ -61,11 +65,11 @@ namespace UnitTesting.Tests.Project
} }
[Test] [Test]
public void InnerTestClassWithoutTestFixtureAttributeFound() public void InnerNonTestClassWithoutWasNotMarkedAsTestClass()
{ {
AssertTestResultContainsClass(nonTestInnerClass); AssertTestResultDoesNotContainClass(nonTestInnerClass);
} }
[Test] [Test]
public void InnerClassInInnerClassFound() public void InnerClassInInnerClassFound()
{ {
@ -91,6 +95,13 @@ namespace UnitTesting.Tests.Project
throw new AssertionException(string.Format("Test result should contain class {0}.", clazz.FullyQualifiedName)); throw new AssertionException(string.Format("Test result should contain class {0}.", clazz.FullyQualifiedName));
} }
void AssertTestResultDoesNotContainClass(MockClass clazz)
{
var testClazz = TestClassRelatedTo(clazz);
if (testClazz != null)
throw new AssertionException(string.Format("Test result should not contain class {0}.", clazz.FullyQualifiedName));
}
TestClass TestClassRelatedTo(IClass clazz) TestClass TestClassRelatedTo(IClass clazz)
{ {
return testProject.TestClasses.SingleOrDefault(c => c.Class == clazz); return testProject.TestClasses.SingleOrDefault(c => c.Class == clazz);

Loading…
Cancel
Save