Skip to content

Commit

Permalink
* Add support for MbUnit.dll
Browse files Browse the repository at this point in the history
* Add tests for MbUnit

* add Activator tests to see if the test attribute objects can be instantiated dynamically
  this require the reference to MbUnit and Gallio!(unfortunately) but just for the test

Known problems:
  MbUnitRuntimeProvider.TestInconclusive might not work correctly
  • Loading branch information
unknown committed Jun 3, 2010
1 parent 2391181 commit 0650a52
Show file tree
Hide file tree
Showing 15 changed files with 678 additions and 270 deletions.
3 changes: 3 additions & 0 deletions Generator/Configuration/GeneratorConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ private void SetUnitTestDefaultsByName(string name)
case "nunit":
GeneratorUnitTestProviderType = typeof(NUnitTestConverter);
break;
case "mbunit":
GeneratorUnitTestProviderType = typeof(MbUnitTestGeneratorProvider);
break;
case "xunit":
GeneratorUnitTestProviderType = typeof(XUnitTestGeneratorProvider);
break;
Expand Down
1 change: 1 addition & 0 deletions Generator/TechTalk.SpecFlow.Generator.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SpecFlowGenerator.cs" />
<Compile Include="SpecFlowUnitTestConverter.cs" />
<Compile Include="UnitTestProvider\MbUnitTestGeneratorProvider.cs" />
<Compile Include="UnitTestProvider\XUnitTestGeneratorProvider.cs" />
<Compile Include="UnitTestProvider\IUnitTestGeneratorProvider.cs" />
<Compile Include="UnitTestProvider\MsTestGeneratorProvider.cs" />
Expand Down
104 changes: 104 additions & 0 deletions Generator/UnitTestProvider/MbUnitTestGeneratorProvider.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
using System;
using System.CodeDom;
using System.Collections.Generic;
using System.Linq;

namespace TechTalk.SpecFlow.Generator.UnitTestProvider
{
public class MbUnitTestGeneratorProvider : IUnitTestGeneratorProvider
{
private const string TESTFIXTURE_ATTR = "MbUnit.Framework.TestFixtureAttribute";
private const string TEST_ATTR = "MbUnit.Framework.TestAttribute";
private const string CATEGORY_ATTR = "MbUnit.Framework.CategoryAttribute";
private const string TESTSETUP_ATTR = "MbUnit.Framework.SetUpAttribute";
private const string TESTFIXTURESETUP_ATTR = "MbUnit.Framework.FixtureSetUpAttribute";
private const string TESTFIXTURETEARDOWN_ATTR = "MbUnit.Framework.FixtureTearDownAttribute";
private const string TESTTEARDOWN_ATTR = "MbUnit.Framework.TearDownAttribute";
private const string IGNORE_ATTR = "MbUnit.Framework.IgnoreAttribute";
private const string DESCRIPTION_ATTR = "MbUnit.Framework.DescriptionAttribute";

public void SetTestFixture(CodeTypeDeclaration typeDeclaration, string title, string description)
{
typeDeclaration.CustomAttributes.Add(
new CodeAttributeDeclaration(
new CodeTypeReference(TESTFIXTURE_ATTR)));

SetDescription(typeDeclaration.CustomAttributes, title);
}

private void SetDescription(CodeAttributeDeclarationCollection customAttributes, string description)
{
customAttributes.Add(
new CodeAttributeDeclaration(
new CodeTypeReference(DESCRIPTION_ATTR),
new CodeAttributeArgument(
new CodePrimitiveExpression(description))));
}

private void SetCategories(CodeAttributeDeclarationCollection customAttributes, IEnumerable<string> categories)
{
foreach (var category in categories)
{
customAttributes.Add(
new CodeAttributeDeclaration(
new CodeTypeReference(CATEGORY_ATTR),
new CodeAttributeArgument(
new CodePrimitiveExpression(category))));
}
}

public void SetTestFixtureCategories(CodeTypeDeclaration typeDeclaration, IEnumerable<string> categories)
{
SetCategories(typeDeclaration.CustomAttributes, categories);
}

public void SetTest(CodeMemberMethod memberMethod, string title)
{
memberMethod.CustomAttributes.Add(
new CodeAttributeDeclaration(
new CodeTypeReference(TEST_ATTR)));

SetDescription(memberMethod.CustomAttributes, title);
}

public void SetTestCategories(CodeMemberMethod memberMethod, IEnumerable<string> categories)
{
SetCategories(memberMethod.CustomAttributes, categories);
}

public void SetTestSetup(CodeMemberMethod memberMethod)
{
memberMethod.CustomAttributes.Add(
new CodeAttributeDeclaration(
new CodeTypeReference(TESTSETUP_ATTR)));
}

public void SetTestFixtureSetup(CodeMemberMethod memberMethod)
{
memberMethod.CustomAttributes.Add(
new CodeAttributeDeclaration(
new CodeTypeReference(TESTFIXTURESETUP_ATTR)));
}

public void SetTestFixtureTearDown(CodeMemberMethod memberMethod)
{
memberMethod.CustomAttributes.Add(
new CodeAttributeDeclaration(
new CodeTypeReference(TESTFIXTURETEARDOWN_ATTR)));
}

public void SetTestTearDown(CodeMemberMethod memberMethod)
{
memberMethod.CustomAttributes.Add(
new CodeAttributeDeclaration(
new CodeTypeReference(TESTTEARDOWN_ATTR)));
}

public void SetIgnore(CodeTypeMember codeTypeMember)
{
codeTypeMember.CustomAttributes.Add(
new CodeAttributeDeclaration(
new CodeTypeReference(IGNORE_ATTR)));
}
}
}
3 changes: 3 additions & 0 deletions Runtime/Configuration/RuntimeConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,9 @@ private void SetUnitTestDefaultsByName(string name)
case "nunit":
RuntimeUnitTestProviderType = typeof(NUnitRuntimeProvider);
break;
case "mbunit":
RuntimeUnitTestProviderType = typeof(MbUnitRuntimeProvider);
break;
case "xunit":
RuntimeUnitTestProviderType = typeof(XUnitRuntimeProvider);
break;
Expand Down
1 change: 1 addition & 0 deletions Runtime/TechTalk.SpecFlow.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@
<Compile Include="Tracing\NullListener.cs" />
<Compile Include="Tracing\StepDefinitonSkeletonProvider.cs" />
<Compile Include="Tracing\StepFormatter.cs" />
<Compile Include="UnitTestProvider\MbUnitRuntimeProvider.cs" />
<Compile Include="UnitTestProvider\XUnitRuntimeProvider.cs" />
<Compile Include="UnitTestProvider\MsTestRuntimeProvider.cs" />
<Compile Include="UnitTestProvider\NUnitRuntimeProvider.cs" />
Expand Down
37 changes: 37 additions & 0 deletions Runtime/UnitTestProvider/MbUnitRuntimeProvider.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
using System;

namespace TechTalk.SpecFlow.UnitTestProvider
{
public class MbUnitRuntimeProvider : IUnitTestRuntimeProvider
{
private const string MSTEST_ASSEMBLY = "MbUnit";
private const string ASSERT_TYPE = "MbUnit.Framework.Assert";

private Action<string> assertInconclusive;

#region IUnitTestRuntimeProvider Members

public void TestInconclusive(string message)
{
if (assertInconclusive == null)
{
assertInconclusive = UnitTestRuntimeProviderHelper
.GetAssertMethod(MSTEST_ASSEMBLY, ASSERT_TYPE, "Inconclusive");
}

assertInconclusive(message);
}

public void TestIgnore(string message)
{
TestInconclusive(message); // there is no dynamic "Ignore" in mstest
}

public bool DelayedFixtureTearDown
{
get { return true; }
}

#endregion
}
}
7 changes: 7 additions & 0 deletions Tests/ParserTests/ParserTests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="MbUnit, Version=3.2.0.0, Culture=neutral, PublicKeyToken=eb9cfa67ee6ab36e, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\mbunit\MbUnit.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=2.5.1.9189, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\nunit\nunit.framework.dll</HintPath>
Expand All @@ -51,11 +55,14 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="SuccessfulMbUnitGenerationTest.cs" />
<Compile Include="SuccessfulXUnitGenerationTest.cs" />
<Compile Include="SuccessfulGenerationTest.cs" />
<Compile Include="SuccessfulParsingTest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TestFileHelper.cs" />
<Compile Include="TestFrameworks\MbUnitTestActivator.cs" />
<Compile Include="TestFrameworks\NUnitTestActivator.cs" />
<Compile Include="Utf8StringWriter.cs" />
</ItemGroup>
<ItemGroup>
Expand Down
Loading

0 comments on commit 0650a52

Please sign in to comment.