Skip to content

Commit

Permalink
Added seperate tests for verifying traits processing #392
Browse files Browse the repository at this point in the history
  • Loading branch information
OsirisTerje committed Sep 28, 2017
1 parent 6454201 commit c3d5e6c
Show file tree
Hide file tree
Showing 2 changed files with 294 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/NUnitTestAdapterTests/NUnit.TestAdapter.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,14 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="NSubstitute" Version="2.0.3" />
<PackageReference Include="NUnit" Version="3.7.1" />
<PackageReference Include="nunit3testadapter" Version="3.7.0" />
<PackageReference Include="NUnitLite" Version="3.7.2" />
</ItemGroup>

<ItemGroup Condition=" '$(TargetFramework)' == 'net45' ">
<PackageReference Include="Microsoft.VisualStudio.TestPlatform.ObjectModel" Version="0.0.3" PrivateAssets="All" />
<PackageReference Include="Microsoft.VisualStudio.TestPlatform.ObjectModel" Version="11.0.0" PrivateAssets="All" />
</ItemGroup>

<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">
Expand Down
292 changes: 292 additions & 0 deletions src/NUnitTestAdapterTests/TraitsTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,292 @@
using System.Collections.Generic;
using System.Linq;
using System.Xml;
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;
using NSubstitute;
using NUnit.Framework;


namespace NUnit.VisualStudio.TestAdapter.Tests
{

public class TestDataForTraits
{
const string TestXml =
@"<test-suite
id='121'
name='FakeTestData'
fullname='NUnit.VisualStudio.TestAdapter.Tests.Fakes.FakeTestData'
classname='NUnit.VisualStudio.TestAdapter.Tests.Fakes.FakeTestData'>
<properties>
<property name='Category' value='super' />
</properties>
<test-case
id='123'
name='FakeTestCase'
fullname='NUnit.VisualStudio.TestAdapter.Tests.Fakes.FakeTestData.FakeTestCase'
methodname='FakeTestCase'
classname='NUnit.VisualStudio.TestAdapter.Tests.Fakes.FakeTestData'>
<properties>
<property name='Category' value='cat1' />
<property name='Priority' value='medium' />
</properties>
</test-case>
</test-suite>";

const string XmlHierarchyOfClasses = @"<test-run id='2' name='nUnitClassLibrary.dll' fullname='C:\Users\navb\source\repos\nUnitClassLibrary\nUnitClassLibrary\bin\Debug\nUnitClassLibrary.dll' testcasecount='5'>
<test-suite type='Assembly' id='0-1009' name='nUnitClassLibrary.dll' fullname='C:\Users\navb\source\repos\nUnitClassLibrary\nUnitClassLibrary\bin\Debug\nUnitClassLibrary.dll' runstate='Runnable' testcasecount='5'>
<properties>
<property name='_PID' value='6164' />
<property name='_APPDOMAIN' value='domain-71b2ab93-nUnitClassLibrary.dll' />
</properties>
<test-suite type='TestSuite' id='0-1010' name='nUnitClassLibrary' fullname='nUnitClassLibrary' runstate='Runnable' testcasecount='5'>
<test-suite type='TestFixture' id='0-1000' name='Class1' fullname='nUnitClassLibrary.Class1' classname='nUnitClassLibrary.Class1' runstate='Runnable' testcasecount='1'>
<properties>
<property name='Category' value='BaseClass' />
</properties>
<test-case id='0-1001' name='nUnitTest' fullname='nUnitClassLibrary.Class1.nUnitTest' methodname='nUnitTest' classname='nUnitClassLibrary.Class1' runstate='Runnable' seed='113395783'>
<properties>
<property name='Category' value='Base' />
</properties>
</test-case>
</test-suite>
<test-suite type='TestFixture' id='0-1002' name='ClassD' fullname='nUnitClassLibrary.ClassD' classname='nUnitClassLibrary.ClassD' runstate='Runnable' testcasecount='2'>
<properties>
<property name='Category' value='DerivedClass' />
<property name='Category' value='BaseClass' />
</properties>
<test-case id='0-1003' name='dNunitTest' fullname='nUnitClassLibrary.ClassD.dNunitTest' methodname='dNunitTest' classname='nUnitClassLibrary.ClassD' runstate='Runnable' seed='405714082'>
<properties>
<property name='Category' value='Derived' />
</properties>
</test-case>
<test-case id='0-1004' name='nUnitTest' fullname='nUnitClassLibrary.ClassD.nUnitTest' methodname='nUnitTest' classname='nUnitClassLibrary.Class1' runstate='Runnable' seed='1553985978'>
<properties>
<property name='Category' value='Base' />
</properties>
</test-case>
</test-suite>
</test-suite>
</test-suite>
</test-run>";

const string XmlNestedClasses = @"<test-run id='2' name='nUnitClassLibrary.dll' fullname='C:\Users\navb\source\repos\nUnitClassLibrary\nUnitClassLibrary\bin\Debug\nUnitClassLibrary.dll' testcasecount='5'>
<test-suite type='Assembly' id='0-1009' name='nUnitClassLibrary.dll' fullname='C:\Users\navb\source\repos\nUnitClassLibrary\nUnitClassLibrary\bin\Debug\nUnitClassLibrary.dll' runstate='Runnable' testcasecount='5'>
<properties>
<property name='_PID' value='6164' />
<property name='_APPDOMAIN' value='domain-71b2ab93-nUnitClassLibrary.dll' />
</properties>
<test-suite type='TestSuite' id='0-1010' name='nUnitClassLibrary' fullname='nUnitClassLibrary' runstate='Runnable' testcasecount='5'>
<test-suite type='TestFixture' id='0-1005' name='NestedClasses' fullname='nUnitClassLibrary.NestedClasses' classname='nUnitClassLibrary.NestedClasses' runstate='Runnable' testcasecount='1'>
<properties>
<property name='Category' value='NS1' />
</properties>
<test-case id='0-1006' name='NC11' fullname='nUnitClassLibrary.NestedClasses.NC11' methodname='NC11' classname='nUnitClassLibrary.NestedClasses' runstate='Runnable' seed='1107340752'>
<properties>
<property name='Category' value='NS11' />
</properties>
</test-case>
</test-suite>
<test-suite type='TestFixture' id='0-1007' name='NestedClasses+NestedClass2' fullname='nUnitClassLibrary.NestedClasses+NestedClass2' classname='nUnitClassLibrary.NestedClasses+NestedClass2' runstate='Runnable' testcasecount='1'>
<properties>
<property name='Category' value='NS2' />
</properties>
<test-case id='0-1008' name='NC21' fullname='nUnitClassLibrary.NestedClasses+NestedClass2.NC21' methodname='NC21' classname='nUnitClassLibrary.NestedClasses+NestedClass2' runstate='Runnable' seed='1823789309'>
<properties>
<property name='Category' value='NS21' />
</properties>
</test-case>
</test-suite>
</test-suite>
</test-suite>
</test-run>";






/// <summary>
/// [Category("ClassLevel")]
///public class ManyTests
///{
/// [TestCase(1), Category("TestCase level")]
/// [TestCase(2)]
/// [Category("MethodLevel")]
/// public void ThatWeExist(int n)
/// {
/// Assert.IsTrue(true);
/// }
///}
/// </summary>
const string TestXmlParametrizedData =
@"<test-suite type='Assembly' id='4-1004' name='ClassLibrary11.dll' fullname='C:\Users\Terje\documents\visual studio 2017\Projects\ClassLibrary11\ClassLibrary11\bin\Debug\ClassLibrary11.dll' runstate='Runnable' testcasecount='2'>
<properties>
<property name='_PID' value='10904' />
<property name='_APPDOMAIN' value='domain-aa3de7f5-ClassLibrary11.dll' />
</properties>
<test-suite type='TestSuite' id='4-1005' name='ClassLibrary11' fullname='ClassLibrary11' runstate='Runnable' testcasecount='2'>
<test-suite type='TestFixture' id='4-1000' name='ManyTests' fullname='ClassLibrary11.ManyTests' classname='ClassLibrary11.ManyTests' runstate='Runnable' testcasecount='2'>
<properties>
<property name='Category' value='ClassLevel' />
</properties>
<test-suite type='ParameterizedMethod' id='4-1003' name='ThatWeExist' fullname='ClassLibrary11.ManyTests.ThatWeExist' classname='ClassLibrary11.ManyTests' runstate='Runnable' testcasecount='2'>
<properties>
<property name='Category' value='TestCase level' />
<property name='Category' value='MethodLevel' />
</properties>
<test-case id='4-1001' name='ThatWeExist(1)' fullname='ClassLibrary11.ManyTests.ThatWeExist(1)' methodname='ThatWeExist' classname='ClassLibrary11.ManyTests' runstate='Runnable' seed='1087191830' />
<test-case id='4-1002' name='ThatWeExist(2)' fullname='ClassLibrary11.ManyTests.ThatWeExist(2)' methodname='ThatWeExist' classname='ClassLibrary11.ManyTests' runstate='Runnable' seed='1855643337' />
</test-suite>
</test-suite>
</test-suite>
</test-suite>";

/// <summary>
/// [Category("ClassLevel")]
///public class StandardClass
///{
/// [Category("MethodLevel")]
/// [Test]
/// public void ThatWeExist()
/// {
/// Assert.IsTrue(true);
/// }
///}
/// </summary>
private const string TestXmlStandardClass =
@"<test-suite type='Assembly' id='5-1002' name='ClassLibrary11.dll' fullname='C:\Users\Terje\documents\visual studio 2017\Projects\ClassLibrary11\ClassLibrary11\bin\Debug\ClassLibrary11.dll' runstate='Runnable' testcasecount='1'>
<properties>
<property name='_PID' value='10904' />
<property name='_APPDOMAIN' value='domain-aa3de7f5-ClassLibrary11.dll' />
</properties>
<test-suite type='TestSuite' id='5-1003' name='ClassLibrary11' fullname='ClassLibrary11' runstate='Runnable' testcasecount='1'>
<test-suite type='TestFixture' id='5-1000' name='StandardClass' fullname='ClassLibrary11.StandardClass' classname='ClassLibrary11.StandardClass' runstate='Runnable' testcasecount='1'>
<properties>
<property name='Category' value='ClassLevel' />
</properties>
<test-case id='5-1001' name='ThatWeExist' fullname='ClassLibrary11.StandardClass.ThatWeExist' methodname='ThatWeExist' classname='ClassLibrary11.StandardClass' runstate='Runnable' seed='1462235782'>
<properties>
<property name='Category' value='MethodLevel' />
</properties>
</test-case>
</test-suite>
</test-suite>
</test-suite>";





public XmlNode XmlForNestedClasses => XmlHelper.CreateXmlNode(XmlNestedClasses);
public XmlNode XmlForHierarchyOfClasses => XmlHelper.CreateXmlNode(XmlHierarchyOfClasses);
public XmlNode XmlForParametrizedTests => XmlHelper.CreateXmlNode(TestXmlParametrizedData);

public XmlNode XmlForStandardTest => XmlHelper.CreateXmlNode(TestXmlStandardClass);





}






#if !NETCOREAPP1_0
public class TestTraits
{
private TestConverter testconverter;
private List<TestCase> testcaselist;
private TestDataForTraits testDataForTraits;


[SetUp]
public void SetUp()
{
testDataForTraits = new TestDataForTraits();
var messagelogger = Substitute.For<IMessageLogger>();
var testlogger = new TestLogger(messagelogger, 5);

testconverter = new TestConverter(testlogger, "whatever", false);
testcaselist = new List<TestCase>();
}

[Test]
public void ThatParametrizedTestsHaveTraits()
{
var xml = testDataForTraits.XmlForParametrizedTests;

ProcessXml2TestCase(xml);

Assert.That(testcaselist.Count, Is.EqualTo(2), "Wrong number of testcases found");
var testcase1 = testcaselist.FirstOrDefault(o => o.DisplayName == "ThatWeExist(1)");
Assert.That(testcase1, Is.Not.Null, "Didn't find the first testcase");
Assert.That(testcase1.Traits.Count(), Is.EqualTo(3), "Wrong number of categories for first test case");





var testcase2 = testcaselist.FirstOrDefault(o => o.DisplayName == "ThatWeExist(2)");
Assert.That(testcase2, Is.Not.Null, "Didn't find the second testcase");
Assert.That(testcase2.Traits.Count(), Is.EqualTo(3), "Wrong number of categories for second test case");

}

[Test]
public void ThatDerivedClassesHaveTraits()
{
var xml = testDataForTraits.XmlForHierarchyOfClasses;

ProcessXml2TestCase(xml);

Assert.That(testcaselist.Count, Is.EqualTo(3), "Wrong number of testcases found");
var testcase1 = testcaselist.FirstOrDefault(o => o.DisplayName == "dNunitTest");
Assert.That(testcase1, Is.Not.Null, "Didn't find the testcase");
Assert.That(testcase1.Traits.Count(), Is.EqualTo(3), "Wrong number of categories for derived test case");
}

[Test]
public void ThatNestedClassesHaveTraits()
{
var xml = testDataForTraits.XmlForNestedClasses;

ProcessXml2TestCase(xml);

Assert.That(testcaselist.Count, Is.EqualTo(2), "Wrong number of testcases found");
var testcase1 = testcaselist.FirstOrDefault(o => o.DisplayName == "NC21");
Assert.That(testcase1, Is.Not.Null, "Didn't find the testcase");
Assert.That(testcase1.Traits.Count(), Is.EqualTo(2), "Wrong number of categories for derived test case");
}

private void ProcessXml2TestCase(XmlNode xml)
{
foreach (XmlNode node in xml.SelectNodes("//test-case"))
{
var testcase = testconverter.ConvertTestCase(node);
testcaselist.Add(testcase);
}
}


[Test]
public void ThatStandardClassHasTraits()
{
var xml = testDataForTraits.XmlForStandardTest;

ProcessXml2TestCase(xml);

Assert.That(testcaselist.Count, Is.EqualTo(1), "Wrong number of testcases found");
var testcase1 = testcaselist.FirstOrDefault(o => o.DisplayName == "ThatWeExist");
Assert.That(testcase1, Is.Not.Null, "Didn't find the testcase");
Assert.That(testcase1.Traits.Count(), Is.EqualTo(2), "Wrong number of categories for first test case");

}

}
#endif
}

0 comments on commit c3d5e6c

Please sign in to comment.