diff --git a/src/AddIns/Analysis/UnitTesting/Src/TestFrameworkDescriptor.cs b/src/AddIns/Analysis/UnitTesting/Src/TestFrameworkDescriptor.cs
index 74feaf1df6..98075981a8 100644
--- a/src/AddIns/Analysis/UnitTesting/Src/TestFrameworkDescriptor.cs
+++ b/src/AddIns/Analysis/UnitTesting/Src/TestFrameworkDescriptor.cs
@@ -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
{
return supportedProjectFileExtensions.Contains(extension);
}
- }
+
+ bool IsSupportedByTestFramework(IProject project)
+ {
+ return TestFramework.IsTestProject(project);
+ }
+ }
}
diff --git a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/RegisteredTestFrameworksTestFixture.cs b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/RegisteredTestFrameworksTestFixture.cs
index 302eef16af..742c51002f 100644
--- a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/RegisteredTestFrameworksTestFixture.cs
+++ b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/RegisteredTestFrameworksTestFixture.cs
@@ -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
{
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
{
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
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
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
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
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
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
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
MockCSharpProject project = new MockCSharpProject();
project.FileName = @"d:\projects\test.csproj";
nunitTestFramework.IsBuildNeededBeforeTestRun = false;
+ nunitTestFramework.AddTestProject(project);
Assert.IsFalse(testFrameworks.IsBuildNeededBeforeTestRunForProject(project));
}
diff --git a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorIgnoresProjectFileExtensionWhitespaceTestFixture.cs b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorIgnoresProjectFileExtensionWhitespaceTestFixture.cs
index da6ee3b2b7..b512fe5d2b 100644
--- a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorIgnoresProjectFileExtensionWhitespaceTestFixture.cs
+++ b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorIgnoresProjectFileExtensionWhitespaceTestFixture.cs
@@ -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
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
public void IsSupportedProjectReturnsTrueForVBNetProject()
{
MockCSharpProject project = new MockCSharpProject();
+ fakeTestFramework.AddTestProject(project);
project.FileName = @"d:\projects\myproj.vbproj";
Assert.IsTrue(descriptor.IsSupportedProject(project));
diff --git a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture.cs b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture.cs
index 4292416748..5f5cf7ae65 100644
--- a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture.cs
+++ b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture.cs
@@ -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
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
public void IsSupportedProjectReturnsTrueForVBNetProject()
{
MockCSharpProject project = new MockCSharpProject();
+ fakeTestFramework.AddTestProject(project);
project.FileName = @"d:\projects\myproj.vbproj";
Assert.IsTrue(descriptor.IsSupportedProject(project));
diff --git a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpProjectsTestFixture.cs b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpProjectsTestFixture.cs
index 7b62e737fb..0ced1247fc 100644
--- a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpProjectsTestFixture.cs
+++ b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpProjectsTestFixture.cs
@@ -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
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
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
public void IsSupportedProjectReturnsTrueForCSharpProjectFileExtensionInUpperCase()
{
MockCSharpProject project = new MockCSharpProject();
+ fakeTestFramework.AddTestProject(project);
project.FileName = @"d:\projects\myproj.CSPROJ";
Assert.IsTrue(descriptor.IsSupportedProject(project));
diff --git a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture.cs b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture.cs
index c67a5f7ae1..09a69fb223 100644
--- a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture.cs
+++ b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture.cs
@@ -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
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
public void IsSupportedProjectReturnsTrueForVBNetProject()
{
MockCSharpProject project = new MockCSharpProject();
+ fakeTestFramework.AddTestProject(project);
project.FileName = @"d:\projects\myproj.vbproj";
Assert.IsTrue(descriptor.IsSupportedProject(project));
diff --git a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorTests.cs b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorTests.cs
new file mode 100644
index 0000000000..212d2bcb33
--- /dev/null
+++ b/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);
+ }
+ }
+}
diff --git a/src/AddIns/Analysis/UnitTesting/Test/UnitTesting.Tests.csproj b/src/AddIns/Analysis/UnitTesting/Test/UnitTesting.Tests.csproj
index 0f235a3bf8..eee1b3d960 100644
--- a/src/AddIns/Analysis/UnitTesting/Test/UnitTesting.Tests.csproj
+++ b/src/AddIns/Analysis/UnitTesting/Test/UnitTesting.Tests.csproj
@@ -77,6 +77,7 @@
+