Browse Source

Abstract classes are not shown as nunit test fixtures in test pad.

Fixed StackOverflowError when updating test class members from new compilation unit.
pull/23/head
Tomasz Tretkowski 14 years ago
parent
commit
262636115d
  1. 2
      src/AddIns/Analysis/UnitTesting/Src/NUnitTestFramework.cs
  2. 4
      src/AddIns/Analysis/UnitTesting/Src/TestClass.cs
  3. 8
      src/AddIns/Analysis/UnitTesting/Test/Frameworks/NUnitTestFrameworkIsTestClassTests.cs
  4. 10
      src/AddIns/Analysis/UnitTesting/Test/Project/DuplicateMethodNameTestFixture.cs

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

@ -44,6 +44,8 @@ namespace ICSharpCode.UnitTesting @@ -44,6 +44,8 @@ namespace ICSharpCode.UnitTesting
/// </summary>
public bool IsTestClass(IClass c)
{
if (c == null) return false;
if (c.IsAbstract) return false;
StringComparer nameComparer = GetNameComparer(c);
if (nameComparer != null) {
NUnitTestAttributeName testAttributeName = new NUnitTestAttributeName("TestFixture", nameComparer);

4
src/AddIns/Analysis/UnitTesting/Src/TestClass.cs

@ -297,7 +297,7 @@ namespace ICSharpCode.UnitTesting @@ -297,7 +297,7 @@ namespace ICSharpCode.UnitTesting
{
foreach (var testMember in testFrameworks.GetTestMembersFor(c.BaseClass)) {
BaseTestMember baseTestMethod = new BaseTestMember(declaringType, testMember.Member);
TestMember testMethod = new TestMember(c, baseTestMethod);
TestMember testMethod = new TestMember(c.BaseClass, baseTestMethod);
if (testMember.Member.IsVirtual) {
if (!testMembers.Contains(testMember.Name)) {
testMembers.Add(testMethod);
@ -313,7 +313,7 @@ namespace ICSharpCode.UnitTesting @@ -313,7 +313,7 @@ namespace ICSharpCode.UnitTesting
baseClassesFQNames.Clear();
foreach (var memberDeclaringClass in testMembers.Select(member => member.DeclaringType).Distinct())
if (memberDeclaringClass != declaringType)
if (memberDeclaringClass.CompareTo(declaringType) != 0)
baseClassesFQNames.Add(memberDeclaringClass.FullyQualifiedName);
return testMembers;
}

8
src/AddIns/Analysis/UnitTesting/Test/Frameworks/NUnitTestFrameworkIsTestClassTests.cs

@ -37,6 +37,14 @@ namespace UnitTesting.Tests.Frameworks @@ -37,6 +37,14 @@ namespace UnitTesting.Tests.Frameworks
Assert.IsTrue(testFramework.IsTestClass(mockClass));
}
[Test]
public void IsTestClassReturnsFalseWhenClassHasTestFixtureAttributeAndIsAbstract() {
MockAttribute testAttribute = new MockAttribute("TestFixture");
MockClass mockClass = MockClass.CreateMockClassWithAttribute(testAttribute);
mockClass.Modifiers = mockClass.Modifiers | ModifierEnum.Abstract;
Assert.IsFalse(testFramework.IsTestClass(mockClass));
}
[Test]
public void IsTestClassReturnsTrueHasClassHasTestFixtureAttribute()
{

10
src/AddIns/Analysis/UnitTesting/Test/Project/DuplicateMethodNameTestFixture.cs

@ -34,7 +34,7 @@ namespace UnitTesting.Tests.Project @@ -34,7 +34,7 @@ namespace UnitTesting.Tests.Project
projectContent.Classes.Add(c);
// Add first method.
MockMethod method = new MockMethod(c, "MyTest");
var method = new MockMethod(c, "MyTest");
method.Attributes.Add(new MockAttribute("Test"));
c.Methods.Add(method);
@ -46,8 +46,10 @@ namespace UnitTesting.Tests.Project @@ -46,8 +46,10 @@ namespace UnitTesting.Tests.Project
baseClass.Attributes.Add(new MockAttribute("TestFixture"));
projectContent.Classes.Add(baseClass);
c.AddBaseClass(baseClass);
baseClass.Methods.Add(method);
baseClass.Methods.Add(method);
var baseClassMethod = new MockMethod(baseClass, "MyTest");
baseClassMethod.Attributes.Add(new MockAttribute("Test"));
baseClass.Methods.Add(baseClassMethod);
baseClass.Methods.Add(baseClassMethod);
// Create test class.
testClass = new TestClass(c, testFrameworks);
@ -65,7 +67,7 @@ namespace UnitTesting.Tests.Project @@ -65,7 +67,7 @@ namespace UnitTesting.Tests.Project
[Test]
public void TestMethodName()
{
Assert.AreEqual("MyTestFixtureBase.MyTest", testClass.TestMembers[0].Name);
Assert.AreEqual("MyTest", testClass.TestMembers[0].Name);
}
[Test]

Loading…
Cancel
Save