1
// ***********************************************************************
2
// Copyright (c) 2007 Charlie Poole
4
// Permission is hereby granted, free of charge, to any person obtaining
5
// a copy of this software and associated documentation files (the
6
// "Software"), to deal in the Software without restriction, including
7
// without limitation the rights to use, copy, modify, merge, publish,
8
// distribute, sublicense, and/or sell copies of the Software, and to
9
// permit persons to whom the Software is furnished to do so, subject to
10
// the following conditions:
12
// The above copyright notice and this permission notice shall be
13
// included in all copies or substantial portions of the Software.
15
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
// ***********************************************************************
25
using NUnit.Framework;
26
using NUnit.TestUtilities;
28
namespace NUnit.Core.Tests
31
public class SetUpFixtureTests
33
private static readonly string testAssembly = "test-assembly.dll";
39
TestUtilities.SimpleEventRecorder.Clear();
43
private TestResult runTests(string nameSpace)
45
return runTests(nameSpace, TestFilter.Empty);
47
private TestResult runTests(string nameSpace, TestFilter filter)
49
TestSuiteBuilder builder = new TestSuiteBuilder();
50
TestPackage package = new TestPackage( testAssembly );
51
package.TestName = nameSpace;
52
Test suite = builder.Build( package );
53
return suite.Run(TestListener.NULL,filter);
58
/// Tests that the TestSuiteBuilder correctly interperets a SetupFixture class as a 'virtual namespace' into which
59
/// all it's sibling classes are inserted.
61
[NUnit.Framework.Test]
62
public void NamespaceSetUpFixtureReplacesNamespaceNodeInTree()
64
string nameSpace = "NUnit.TestData.SetupFixture.Namespace1";
65
TestSuiteBuilder builder = new TestSuiteBuilder();
66
TestPackage package = new TestPackage( testAssembly );
67
package.TestName = nameSpace;
68
Test suite= builder.Build( package );
70
Assert.IsNotNull(suite);
72
Assert.AreEqual(testAssembly, suite.TestName.Name);
73
Assert.AreEqual(1, suite.Tests.Count);
75
string[] nameSpaceBits = nameSpace.Split('.');
76
for (int i = 0; i < nameSpaceBits.Length; i++)
78
suite = suite.Tests[0] as TestSuite;
79
Assert.AreEqual(nameSpaceBits[i], suite.TestName.Name);
80
Assert.AreEqual(1, suite.Tests.Count);
83
Assert.IsInstanceOf(typeof(SetUpFixture), suite);
85
suite = suite.Tests[0] as TestSuite;
86
Assert.AreEqual("SomeTestFixture", suite.TestName.Name);
87
Assert.AreEqual(1, suite.Tests.Count);
91
#region NoNamespaceBuilder
93
/// Tests that the TestSuiteBuilder correctly interperets a SetupFixture class with no parent namespace
94
/// as a 'virtual assembly' into which all it's sibling fixtures are inserted.
96
[NUnit.Framework.Test]
97
public void AssemblySetUpFixtureReplacesAssemblyNodeInTree()
99
TestSuiteBuilder builder = new TestSuiteBuilder();
100
Test suite = builder.Build( new TestPackage( testAssembly ) );
102
Assert.IsNotNull(suite);
103
Assert.IsInstanceOf(typeof(SetUpFixture), suite);
105
suite = suite.Tests[1] as TestSuite;
106
Assert.AreEqual("SomeTestFixture", suite.TestName.Name);
107
Assert.AreEqual(1, suite.TestCount);
109
#endregion NoNamespaceBuilder
113
[NUnit.Framework.Test]
114
public void NamespaceSetUpFixtureWrapsExecutionOfSingleTest()
116
Assert.IsTrue(runTests("NUnit.TestData.SetupFixture.Namespace1").IsSuccess);
117
TestUtilities.SimpleEventRecorder.Verify("NamespaceSetup",
118
"FixtureSetup", "Setup", "Test", "TearDown", "FixtureTearDown",
119
"NamespaceTearDown");
125
public void NamespaceSetUpMethodsMayBeStatic()
127
Assert.IsTrue(runTests("NUnit.TestData.SetupFixture.Namespace5").IsSuccess);
128
TestUtilities.SimpleEventRecorder.Verify("NamespaceSetup",
129
"FixtureSetup", "Setup", "Test", "TearDown", "FixtureTearDown",
130
"NamespaceTearDown");
134
#region TwoTestFixtures
135
[NUnit.Framework.Test]
136
public void NamespaceSetUpFixtureWrapsExecutionOfTwoTests()
138
Assert.IsTrue(runTests("NUnit.TestData.SetupFixture.Namespace2").IsSuccess);
139
TestUtilities.SimpleEventRecorder.Verify("NamespaceSetup",
140
"FixtureSetup", "Setup", "Test", "TearDown", "FixtureTearDown",
141
"FixtureSetup", "Setup", "Test", "TearDown", "FixtureTearDown",
142
"NamespaceTearDown");
144
#endregion TwoTestFixtures
147
[NUnit.Framework.Test]
148
public void NamespaceSetUpFixtureWrapsNestedNamespaceSetUpFixture()
150
Assert.IsTrue(runTests("NUnit.TestData.SetupFixture.Namespace3").IsSuccess);
151
TestUtilities.SimpleEventRecorder.Verify("NamespaceSetup",
152
"FixtureSetup", "Setup", "Test", "TearDown", "FixtureTearDown",
154
"FixtureSetup", "Setup", "Test", "TearDown", "FixtureTearDown",
155
"SubNamespaceTearDown",
156
"NamespaceTearDown");
158
#endregion SubNamespace
160
#region TwoSetUpFixtures
161
[NUnit.Framework.Test]
162
public void WithTwoSetUpFixtuesOnlyOneIsUsed()
164
Assert.IsTrue(runTests("NUnit.TestData.SetupFixture.Namespace4").IsSuccess);
165
TestUtilities.SimpleEventRecorder.Verify("NamespaceSetup2",
166
"FixtureSetup", "Setup", "Test", "TearDown", "FixtureTearDown",
167
"NamespaceTearDown2");
169
#endregion TwoSetUpFixtures
171
#region NoNamespaceSetupFixture
172
[NUnit.Framework.Test]
173
public void AssemblySetupFixtureWrapsExecutionOfTest()
175
TestResult result = runTests(null, new Filters.SimpleNameFilter("SomeTestFixture"));
176
ResultSummary summ = new ResultSummary(result);
177
Assert.AreEqual(1, summ.TestsRun);
178
Assert.IsTrue(result.IsSuccess);
179
TestUtilities.SimpleEventRecorder.Verify("RootNamespaceSetup",
181
"RootNamespaceTearDown");
183
#endregion NoNamespaceSetupFixture