Browse Source

Support multiple test frameworks for a single project file extension.

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

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

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

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

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

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

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

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

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

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

@ -0,0 +1,70 @@ @@ -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 @@ @@ -77,6 +77,7 @@
<Compile Include="Frameworks\TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture.cs" />
<Compile Include="Frameworks\TestFrameworkDescriptorSupportsCSharpProjectsTestFixture.cs" />
<Compile Include="Frameworks\TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture.cs" />
<Compile Include="Frameworks\TestFrameworkDescriptorTests.cs" />
<Compile Include="Frameworks\TestFrameworkDoozerTestFixture.cs" />
<Compile Include="Frameworks\TestResultsReaderTests.cs" />
<Compile Include="Frameworks\NUnitConsoleCommandLineTests.cs" />

Loading…
Cancel
Save