Browse Source

Support multiple test frameworks for a single project file extension.

pull/23/head
Matt Ward 15 years ago
parent
commit
7c531b2754
  1. 15
      src/AddIns/Analysis/UnitTesting/Src/TestFrameworkDescriptor.cs
  2. 15
      src/AddIns/Analysis/UnitTesting/Test/Frameworks/RegisteredTestFrameworksTestFixture.cs
  3. 7
      src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorIgnoresProjectFileExtensionWhitespaceTestFixture.cs
  4. 7
      src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture.cs
  5. 8
      src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpProjectsTestFixture.cs
  6. 7
      src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture.cs
  7. 70
      src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorTests.cs
  8. 1
      src/AddIns/Analysis/UnitTesting/Test/UnitTesting.Tests.csproj

15
src/AddIns/Analysis/UnitTesting/Src/TestFrameworkDescriptor.cs

@ -56,6 +56,14 @@ namespace ICSharpCode.UnitTesting
} }
public bool IsSupportedProject(IProject project) public bool IsSupportedProject(IProject project)
{
if (IsSupportedProjectFileExtension(project)) {
return IsSupportedByTestFramework(project);
}
return false;
}
bool IsSupportedProjectFileExtension(IProject project)
{ {
string extension = GetProjectFileExtension(project); string extension = GetProjectFileExtension(project);
return IsSupportedProjectFileExtension(extension); return IsSupportedProjectFileExtension(extension);
@ -73,5 +81,10 @@ namespace ICSharpCode.UnitTesting
{ {
return supportedProjectFileExtensions.Contains(extension); return supportedProjectFileExtensions.Contains(extension);
} }
}
bool IsSupportedByTestFramework(IProject project)
{
return TestFramework.IsTestProject(project);
}
}
} }

15
src/AddIns/Analysis/UnitTesting/Test/Frameworks/RegisteredTestFrameworksTestFixture.cs

@ -4,6 +4,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.UnitTesting; using ICSharpCode.UnitTesting;
using NUnit.Framework; using NUnit.Framework;
using UnitTesting.Tests.Utils; using UnitTesting.Tests.Utils;
@ -55,6 +56,7 @@ namespace UnitTesting.Tests.Frameworks
{ {
MockCSharpProject project = new MockCSharpProject(); MockCSharpProject project = new MockCSharpProject();
project.FileName = @"d:\projects\test\MyProj.csproj"; project.FileName = @"d:\projects\test\MyProj.csproj";
nunitTestFramework.AddTestProject(project);
Assert.AreEqual(nunitTestFramework, testFrameworks.GetTestFrameworkForProject(project)); Assert.AreEqual(nunitTestFramework, testFrameworks.GetTestFrameworkForProject(project));
} }
@ -64,6 +66,7 @@ namespace UnitTesting.Tests.Frameworks
{ {
MockCSharpProject project = new MockCSharpProject(); MockCSharpProject project = new MockCSharpProject();
project.FileName = @"d:\projects\test\MyProj.vbproj"; project.FileName = @"d:\projects\test\MyProj.vbproj";
mbUnitTestFramework.AddTestProject(project);
Assert.AreEqual(mbUnitTestFramework, testFrameworks.GetTestFrameworkForProject(project)); Assert.AreEqual(mbUnitTestFramework, testFrameworks.GetTestFrameworkForProject(project));
} }
@ -72,6 +75,8 @@ namespace UnitTesting.Tests.Frameworks
public void IsTestMethodReturnsFalseForUnknownMbUnitFrameworkTestMethod() public void IsTestMethodReturnsFalseForUnknownMbUnitFrameworkTestMethod()
{ {
MockMethod method = MockMethod.CreateMockMethodWithoutAnyAttributes(); MockMethod method = MockMethod.CreateMockMethodWithoutAnyAttributes();
IProject project = method.MockDeclaringType.Project;
mbUnitTestFramework.AddTestProject(project);
method.MockDeclaringType.MockProjectContent.ProjectAsIProject.FileName = @"d:\projects\test.vbproj"; method.MockDeclaringType.MockProjectContent.ProjectAsIProject.FileName = @"d:\projects\test.vbproj";
Assert.IsFalse(testFrameworks.IsTestMethod(method)); Assert.IsFalse(testFrameworks.IsTestMethod(method));
@ -81,6 +86,8 @@ namespace UnitTesting.Tests.Frameworks
public void IsTestMethodReturnsTrueForKnownMbUnitFrameworkTestMethod() public void IsTestMethodReturnsTrueForKnownMbUnitFrameworkTestMethod()
{ {
MockMethod method = MockMethod.CreateMockMethodWithoutAnyAttributes(); MockMethod method = MockMethod.CreateMockMethodWithoutAnyAttributes();
IProject project = method.MockDeclaringType.Project;
mbUnitTestFramework.AddTestProject(project);
method.MockDeclaringType.MockProjectContent.ProjectAsIProject.FileName = @"d:\projects\test.vbproj"; method.MockDeclaringType.MockProjectContent.ProjectAsIProject.FileName = @"d:\projects\test.vbproj";
mbUnitTestFramework.AddTestMethod(method); mbUnitTestFramework.AddTestMethod(method);
@ -107,6 +114,7 @@ namespace UnitTesting.Tests.Frameworks
public void IsTestClassReturnsFalseForUnknownMbUnitFrameworkTestClass() public void IsTestClassReturnsFalseForUnknownMbUnitFrameworkTestClass()
{ {
MockClass c = MockClass.CreateMockClassWithoutAnyAttributes(); MockClass c = MockClass.CreateMockClassWithoutAnyAttributes();
mbUnitTestFramework.AddTestProject(c.Project);
c.MockProjectContent.ProjectAsIProject.FileName = @"d:\projects\test.vbproj"; c.MockProjectContent.ProjectAsIProject.FileName = @"d:\projects\test.vbproj";
Assert.IsFalse(testFrameworks.IsTestClass(c)); Assert.IsFalse(testFrameworks.IsTestClass(c));
@ -116,8 +124,10 @@ namespace UnitTesting.Tests.Frameworks
public void IsTestClassReturnsTrueForKnownMbUnitFrameworkTestClass() public void IsTestClassReturnsTrueForKnownMbUnitFrameworkTestClass()
{ {
MockClass c = MockClass.CreateMockClassWithoutAnyAttributes(); MockClass c = MockClass.CreateMockClassWithoutAnyAttributes();
c.MockProjectContent.ProjectAsIProject.FileName = @"d:\projects\test.vbproj"; c.MockProjectContent.ProjectAsIProject.FileName = @"d:\projects\test.vbproj";
mbUnitTestFramework.AddTestProject(c.Project);
mbUnitTestFramework.AddTestClass(c); mbUnitTestFramework.AddTestClass(c);
Assert.IsTrue(testFrameworks.IsTestClass(c)); Assert.IsTrue(testFrameworks.IsTestClass(c));
@ -177,6 +187,8 @@ namespace UnitTesting.Tests.Frameworks
public void CreateTestRunnerReturnsNewTestRunnerFromCorrectTestFramework() public void CreateTestRunnerReturnsNewTestRunnerFromCorrectTestFramework()
{ {
MockCSharpProject project = new MockCSharpProject(); MockCSharpProject project = new MockCSharpProject();
nunitTestFramework.AddTestProject(project);
mbUnitTestFramework.AddTestProject(project);
project.FileName = @"d:\projects\test.csproj"; project.FileName = @"d:\projects\test.csproj";
ITestRunner testRunner = testFrameworks.CreateTestRunner(project); ITestRunner testRunner = testFrameworks.CreateTestRunner(project);
@ -197,6 +209,8 @@ namespace UnitTesting.Tests.Frameworks
public void CreateTestDebuggerReturnsNewTestRunnerFromCorrectTestFramework() public void CreateTestDebuggerReturnsNewTestRunnerFromCorrectTestFramework()
{ {
MockCSharpProject project = new MockCSharpProject(); MockCSharpProject project = new MockCSharpProject();
nunitTestFramework.AddTestProject(project);
mbUnitTestFramework.AddTestProject(project);
project.FileName = @"d:\projects\test.csproj"; project.FileName = @"d:\projects\test.csproj";
ITestRunner testDebugger = testFrameworks.CreateTestDebugger(project); ITestRunner testDebugger = testFrameworks.CreateTestDebugger(project);
@ -229,6 +243,7 @@ namespace UnitTesting.Tests.Frameworks
MockCSharpProject project = new MockCSharpProject(); MockCSharpProject project = new MockCSharpProject();
project.FileName = @"d:\projects\test.csproj"; project.FileName = @"d:\projects\test.csproj";
nunitTestFramework.IsBuildNeededBeforeTestRun = false; nunitTestFramework.IsBuildNeededBeforeTestRun = false;
nunitTestFramework.AddTestProject(project);
Assert.IsFalse(testFrameworks.IsBuildNeededBeforeTestRunForProject(project)); Assert.IsFalse(testFrameworks.IsBuildNeededBeforeTestRunForProject(project));
} }

7
src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorIgnoresProjectFileExtensionWhitespaceTestFixture.cs

@ -13,13 +13,18 @@ namespace UnitTesting.Tests.Frameworks
public class TestFrameworkDescriptorIgnoresProjectFileExtensionWhitespaceTestFixture public class TestFrameworkDescriptorIgnoresProjectFileExtensionWhitespaceTestFixture
{ {
TestFrameworkDescriptor descriptor; TestFrameworkDescriptor descriptor;
MockTestFramework fakeTestFramework;
[SetUp] [SetUp]
public void Init() public void Init()
{ {
MockTestFrameworkFactory factory = new MockTestFrameworkFactory(); MockTestFrameworkFactory factory = new MockTestFrameworkFactory();
fakeTestFramework = new MockTestFramework();
factory.Add("NUnitTestFramework", fakeTestFramework);
Properties properties = new Properties(); Properties properties = new Properties();
properties["id"] = "nunit"; properties["id"] = "nunit";
properties["class"] = "NUnitTestFramework";
properties["supportedProjects"] = " .csproj; .vbproj "; properties["supportedProjects"] = " .csproj; .vbproj ";
descriptor = new TestFrameworkDescriptor(properties, factory); descriptor = new TestFrameworkDescriptor(properties, factory);
@ -29,6 +34,7 @@ namespace UnitTesting.Tests.Frameworks
public void IsSupportedProjectReturnsTrueForCSharpProject() public void IsSupportedProjectReturnsTrueForCSharpProject()
{ {
MockCSharpProject project = new MockCSharpProject(); MockCSharpProject project = new MockCSharpProject();
fakeTestFramework.AddTestProject(project);
project.FileName = @"d:\projects\myproj.csproj"; project.FileName = @"d:\projects\myproj.csproj";
Assert.IsTrue(descriptor.IsSupportedProject(project)); Assert.IsTrue(descriptor.IsSupportedProject(project));
@ -38,6 +44,7 @@ namespace UnitTesting.Tests.Frameworks
public void IsSupportedProjectReturnsTrueForVBNetProject() public void IsSupportedProjectReturnsTrueForVBNetProject()
{ {
MockCSharpProject project = new MockCSharpProject(); MockCSharpProject project = new MockCSharpProject();
fakeTestFramework.AddTestProject(project);
project.FileName = @"d:\projects\myproj.vbproj"; project.FileName = @"d:\projects\myproj.vbproj";
Assert.IsTrue(descriptor.IsSupportedProject(project)); Assert.IsTrue(descriptor.IsSupportedProject(project));

7
src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture.cs

@ -13,14 +13,19 @@ namespace UnitTesting.Tests.Frameworks
public class TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture public class TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture
{ {
TestFrameworkDescriptor descriptor; TestFrameworkDescriptor descriptor;
MockTestFramework fakeTestFramework;
[SetUp] [SetUp]
public void Init() public void Init()
{ {
MockTestFrameworkFactory factory = new MockTestFrameworkFactory(); MockTestFrameworkFactory factory = new MockTestFrameworkFactory();
fakeTestFramework = new MockTestFramework();
factory.Add("NUnitTestFramework", fakeTestFramework);
Properties properties = new Properties(); Properties properties = new Properties();
properties["id"] = "nunit"; properties["id"] = "nunit";
properties["supportedProjects"] = ".csproj;.vbproj"; properties["supportedProjects"] = ".csproj;.vbproj";
properties["class"] = "NUnitTestFramework";
descriptor = new TestFrameworkDescriptor(properties, factory); descriptor = new TestFrameworkDescriptor(properties, factory);
} }
@ -29,6 +34,7 @@ namespace UnitTesting.Tests.Frameworks
public void IsSupportedProjectReturnsTrueForCSharpProject() public void IsSupportedProjectReturnsTrueForCSharpProject()
{ {
MockCSharpProject project = new MockCSharpProject(); MockCSharpProject project = new MockCSharpProject();
fakeTestFramework.AddTestProject(project);
project.FileName = @"d:\projects\myproj.csproj"; project.FileName = @"d:\projects\myproj.csproj";
Assert.IsTrue(descriptor.IsSupportedProject(project)); Assert.IsTrue(descriptor.IsSupportedProject(project));
@ -38,6 +44,7 @@ namespace UnitTesting.Tests.Frameworks
public void IsSupportedProjectReturnsTrueForVBNetProject() public void IsSupportedProjectReturnsTrueForVBNetProject()
{ {
MockCSharpProject project = new MockCSharpProject(); MockCSharpProject project = new MockCSharpProject();
fakeTestFramework.AddTestProject(project);
project.FileName = @"d:\projects\myproj.vbproj"; project.FileName = @"d:\projects\myproj.vbproj";
Assert.IsTrue(descriptor.IsSupportedProject(project)); Assert.IsTrue(descriptor.IsSupportedProject(project));

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

@ -13,14 +13,19 @@ namespace UnitTesting.Tests.Frameworks
public class TestFrameworkDescriptorSupportsCSharpProjectsTestFixture public class TestFrameworkDescriptorSupportsCSharpProjectsTestFixture
{ {
TestFrameworkDescriptor descriptor; TestFrameworkDescriptor descriptor;
MockTestFramework fakeTestFramework;
[SetUp] [SetUp]
public void Init() public void Init()
{ {
MockTestFrameworkFactory factory = new MockTestFrameworkFactory(); MockTestFrameworkFactory factory = new MockTestFrameworkFactory();
fakeTestFramework = new MockTestFramework();
factory.Add("NUnitTestFramework", fakeTestFramework);
Properties properties = new Properties(); Properties properties = new Properties();
properties["id"] = "nunit"; properties["id"] = "nunit";
properties["supportedProjects"] = ".csproj"; properties["supportedProjects"] = ".csproj";
properties["class"] = "NUnitTestFramework";
descriptor = new TestFrameworkDescriptor(properties, factory); descriptor = new TestFrameworkDescriptor(properties, factory);
} }
@ -29,6 +34,7 @@ namespace UnitTesting.Tests.Frameworks
public void IsSupportedProjectReturnsTrueForCSharpProject() public void IsSupportedProjectReturnsTrueForCSharpProject()
{ {
MockCSharpProject project = new MockCSharpProject(); MockCSharpProject project = new MockCSharpProject();
fakeTestFramework.AddTestProject(project);
project.FileName = @"d:\projects\myproj.csproj"; project.FileName = @"d:\projects\myproj.csproj";
Assert.IsTrue(descriptor.IsSupportedProject(project)); Assert.IsTrue(descriptor.IsSupportedProject(project));
@ -38,6 +44,7 @@ namespace UnitTesting.Tests.Frameworks
public void IsSupportedProjectReturnsFalseForVBNetProject() public void IsSupportedProjectReturnsFalseForVBNetProject()
{ {
MockCSharpProject project = new MockCSharpProject(); MockCSharpProject project = new MockCSharpProject();
fakeTestFramework.AddTestProject(project);
project.FileName = @"d:\projects\myproj.vbproj"; project.FileName = @"d:\projects\myproj.vbproj";
Assert.IsFalse(descriptor.IsSupportedProject(project)); Assert.IsFalse(descriptor.IsSupportedProject(project));
@ -53,6 +60,7 @@ namespace UnitTesting.Tests.Frameworks
public void IsSupportedProjectReturnsTrueForCSharpProjectFileExtensionInUpperCase() public void IsSupportedProjectReturnsTrueForCSharpProjectFileExtensionInUpperCase()
{ {
MockCSharpProject project = new MockCSharpProject(); MockCSharpProject project = new MockCSharpProject();
fakeTestFramework.AddTestProject(project);
project.FileName = @"d:\projects\myproj.CSPROJ"; project.FileName = @"d:\projects\myproj.CSPROJ";
Assert.IsTrue(descriptor.IsSupportedProject(project)); Assert.IsTrue(descriptor.IsSupportedProject(project));

7
src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture.cs

@ -13,14 +13,19 @@ namespace UnitTesting.Tests.Frameworks
public class TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture public class TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture
{ {
TestFrameworkDescriptor descriptor; TestFrameworkDescriptor descriptor;
MockTestFramework fakeTestFramework;
[SetUp] [SetUp]
public void Init() public void Init()
{ {
MockTestFrameworkFactory factory = new MockTestFrameworkFactory(); MockTestFrameworkFactory factory = new MockTestFrameworkFactory();
fakeTestFramework = new MockTestFramework();
factory.Add("NUnitTestFramework", fakeTestFramework);
Properties properties = new Properties(); Properties properties = new Properties();
properties["id"] = "nunit"; properties["id"] = "nunit";
properties["supportedProjects"] = ".CSPROJ;.VBPROJ"; properties["supportedProjects"] = ".CSPROJ;.VBPROJ";
properties["class"] = "NUnitTestFramework";
descriptor = new TestFrameworkDescriptor(properties, factory); descriptor = new TestFrameworkDescriptor(properties, factory);
} }
@ -29,6 +34,7 @@ namespace UnitTesting.Tests.Frameworks
public void IsSupportedProjectReturnsTrueForCSharpProject() public void IsSupportedProjectReturnsTrueForCSharpProject()
{ {
MockCSharpProject project = new MockCSharpProject(); MockCSharpProject project = new MockCSharpProject();
fakeTestFramework.AddTestProject(project);
project.FileName = @"d:\projects\myproj.csproj"; project.FileName = @"d:\projects\myproj.csproj";
Assert.IsTrue(descriptor.IsSupportedProject(project)); Assert.IsTrue(descriptor.IsSupportedProject(project));
@ -38,6 +44,7 @@ namespace UnitTesting.Tests.Frameworks
public void IsSupportedProjectReturnsTrueForVBNetProject() public void IsSupportedProjectReturnsTrueForVBNetProject()
{ {
MockCSharpProject project = new MockCSharpProject(); MockCSharpProject project = new MockCSharpProject();
fakeTestFramework.AddTestProject(project);
project.FileName = @"d:\projects\myproj.vbproj"; project.FileName = @"d:\projects\myproj.vbproj";
Assert.IsTrue(descriptor.IsSupportedProject(project)); Assert.IsTrue(descriptor.IsSupportedProject(project));

70
src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorTests.cs

@ -0,0 +1,70 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.Core;
using ICSharpCode.UnitTesting;
using NUnit.Framework;
using UnitTesting.Tests.Utils;
namespace UnitTesting.Tests.Frameworks
{
[TestFixture]
public class TestFrameworkDescriptorTests
{
TestFrameworkDescriptor descriptor;
MockTestFrameworkFactory fakeTestFrameworkFactory;
MockTestFramework fakeTestFramework;
void CreateTestFrameworkDescriptorToSupportCSharpProjects()
{
CreateTestFrameworkDescriptorToSupportProjectFileExtensions(".csproj");
}
void CreateTestFrameworkDescriptorToSupportProjectFileExtensions(string fileExtensions)
{
Properties properties = new Properties();
properties["id"] = "nunit";
properties["class"] = "NUnitTestFramework";
properties["supportedProjects"] = ".csproj;.vbproj";
fakeTestFrameworkFactory = new MockTestFrameworkFactory();
fakeTestFramework = new MockTestFramework();
fakeTestFrameworkFactory.Add("NUnitTestFramework", fakeTestFramework);
descriptor = new TestFrameworkDescriptor(properties, fakeTestFrameworkFactory);
}
MockCSharpProject CreateCSharpProjectNotSupportedByTestFramework()
{
return new MockCSharpProject();
}
MockCSharpProject CreateCSharpProjectSupportedByTestFramework()
{
var project = new MockCSharpProject();
fakeTestFramework.AddTestProject(project);
return project;
}
[Test]
public void IsSupportedProject_CSharpProjectIsSupportedByFileExtensionButNotByTestFramework_ReturnsFalse()
{
CreateTestFrameworkDescriptorToSupportCSharpProjects();
MockCSharpProject project = CreateCSharpProjectNotSupportedByTestFramework();
bool supported = descriptor.IsSupportedProject(project);
Assert.IsFalse(supported);
}
[Test]
public void IsSupportedProject_CSharpProjectIsSupportedByFileExtensionAndByTestFramework_ReturnsTrue()
{
CreateTestFrameworkDescriptorToSupportCSharpProjects();
MockCSharpProject project = CreateCSharpProjectSupportedByTestFramework();
bool supported = descriptor.IsSupportedProject(project);
Assert.IsTrue(supported);
}
}
}

1
src/AddIns/Analysis/UnitTesting/Test/UnitTesting.Tests.csproj

@ -77,6 +77,7 @@
<Compile Include="Frameworks\TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture.cs" /> <Compile Include="Frameworks\TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture.cs" />
<Compile Include="Frameworks\TestFrameworkDescriptorSupportsCSharpProjectsTestFixture.cs" /> <Compile Include="Frameworks\TestFrameworkDescriptorSupportsCSharpProjectsTestFixture.cs" />
<Compile Include="Frameworks\TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture.cs" /> <Compile Include="Frameworks\TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture.cs" />
<Compile Include="Frameworks\TestFrameworkDescriptorTests.cs" />
<Compile Include="Frameworks\TestFrameworkDoozerTestFixture.cs" /> <Compile Include="Frameworks\TestFrameworkDoozerTestFixture.cs" />
<Compile Include="Frameworks\TestResultsReaderTests.cs" /> <Compile Include="Frameworks\TestResultsReaderTests.cs" />
<Compile Include="Frameworks\NUnitConsoleCommandLineTests.cs" /> <Compile Include="Frameworks\NUnitConsoleCommandLineTests.cs" />

Loading…
Cancel
Save