nunit 2.4.8.0 → 2.5.0.9122
Sign up to get free protection for your applications and to get access to all the features.
- data/docs/addinsDialog.html +36 -6
- data/docs/assertions.html +31 -12
- data/docs/attributes.html +59 -36
- data/docs/category.html +32 -9
- data/docs/collectionAssert.html +30 -12
- data/docs/collectionConstraints.html +242 -44
- data/docs/combinatorial.html +130 -0
- data/docs/comparisonAsserts.html +12 -9
- data/docs/comparisonConstraints.html +159 -25
- data/docs/compoundConstraints.html +12 -9
- data/docs/conditionAsserts.html +36 -12
- data/docs/conditionConstraints.html +131 -25
- data/docs/configEditor.html +10 -5
- data/docs/configFiles.html +5 -6
- data/docs/consoleCommandLine.html +51 -24
- data/docs/constraintModel.html +56 -19
- data/docs/contextMenu.html +10 -5
- data/docs/culture.html +32 -9
- data/docs/customConstraints.html +53 -37
- data/docs/datapoint.html +124 -0
- data/docs/datapointProviders.html +105 -0
- data/docs/delayedConstraint.html +98 -0
- data/docs/description.html +32 -9
- data/docs/directoryAssert.html +151 -0
- data/docs/equalConstraint.html +167 -47
- data/docs/equalityAsserts.html +12 -9
- data/docs/eventListeners.html +110 -0
- data/docs/exception.html +61 -36
- data/docs/exceptionAsserts.html +210 -0
- data/docs/explicit.html +32 -9
- data/docs/extensibility.html +8 -8
- data/docs/extensionTips.html +100 -0
- data/docs/fileAssert.html +12 -9
- data/docs/files/TestResult.xml +99 -67
- data/docs/fixtureSetup.html +60 -18
- data/docs/fixtureTeardown.html +56 -17
- data/docs/getStarted.html +9 -4
- data/docs/guiCommandLine.html +10 -5
- data/docs/identityAsserts.html +12 -9
- data/docs/ignore.html +32 -9
- data/docs/img/addinsDialog.JPG +0 -0
- data/docs/img/advancedSettings.jpg +0 -0
- data/docs/img/assembliesTab.jpg +0 -0
- data/docs/img/assemblyReloadSettings.JPG +0 -0
- data/docs/img/configEditor.jpg +0 -0
- data/docs/img/console-mock.jpg +0 -0
- data/docs/img/generalSettings.jpg +0 -0
- data/docs/img/generalTab.jpg +0 -0
- data/docs/img/gui-screenshot.jpg +0 -0
- data/docs/img/gui-verify.jpg +0 -0
- data/docs/img/miniGui.jpg +0 -0
- data/docs/img/testLoadSettings.jpg +0 -0
- data/docs/img/testOutputSettings.jpg +0 -0
- data/docs/img/testProperties.jpg +0 -0
- data/docs/img/testResultSettings.JPG +0 -0
- data/docs/img/textOutputSettings.jpg +0 -0
- data/docs/img/treeDisplaySettings.jpg +0 -0
- data/docs/img/visualStudioSettings.jpg +0 -0
- data/docs/index.html +15 -8
- data/docs/installation.html +33 -75
- data/docs/license.html +9 -4
- data/docs/listMapper.html +12 -9
- data/docs/mainMenu.html +18 -8
- data/docs/maxtime.html +109 -0
- data/docs/multiAssembly.html +5 -6
- data/docs/nunit-console.html +9 -4
- data/docs/nunit-gui.html +32 -15
- data/docs/nunit.css +3 -3
- data/docs/nunitAddins.html +41 -144
- data/docs/pairwise.html +114 -0
- data/docs/parameterizedTests.html +141 -0
- data/docs/pathConstraints.html +162 -0
- data/docs/platform.html +37 -9
- data/docs/pnunit.html +93 -0
- data/docs/projectEditor.html +82 -11
- data/docs/property.html +39 -10
- data/docs/propertyConstraint.html +12 -9
- data/docs/quickStart.html +9 -4
- data/docs/random.html +138 -0
- data/docs/range.html +149 -0
- data/docs/releaseDetail.html +861 -0
- data/docs/releaseNotes.html +457 -1133
- data/docs/repeat.html +104 -0
- data/docs/requiredAddin.html +153 -0
- data/docs/requiresMTA.html +152 -0
- data/docs/requiresSTA.html +153 -0
- data/docs/requiresThread.html +153 -0
- data/docs/sameasConstraint.html +23 -17
- data/docs/samples.html +12 -9
- data/docs/sequential.html +132 -0
- data/docs/setCulture.html +32 -9
- data/docs/{optionsDialog.html → settingsDialog.html} +89 -53
- data/docs/setup.html +61 -16
- data/docs/setupFixture.html +32 -9
- data/docs/stringAssert.html +15 -12
- data/docs/stringConstraints.html +12 -9
- data/docs/suite.html +32 -11
- data/docs/suiteBuilders.html +106 -0
- data/docs/teardown.html +56 -16
- data/docs/test.html +67 -18
- data/docs/testCase.html +168 -0
- data/docs/testCaseSource.html +284 -0
- data/docs/testDecorators.html +117 -0
- data/docs/testFixture.html +228 -16
- data/docs/testProperties.html +10 -5
- data/docs/testcaseBuilders.html +117 -0
- data/docs/testcaseProviders.html +122 -0
- data/docs/theory.html +208 -0
- data/docs/throwsConstraint.html +112 -0
- data/docs/timeout.html +109 -0
- data/docs/typeAsserts.html +47 -14
- data/docs/typeConstraints.html +12 -9
- data/docs/upgrade.html +23 -17
- data/docs/utilityAsserts.html +38 -16
- data/docs/valueSource.html +137 -0
- data/docs/values.html +136 -0
- data/docs/vsSupport.html +5 -6
- data/lib/net-1.1/NUnitTests.config +2 -2
- data/lib/net-1.1/NUnitTests.nunit +8 -11
- data/lib/net-1.1/agent.conf +4 -0
- data/lib/net-1.1/agent.log.conf +18 -0
- data/lib/net-1.1/framework/nunit.framework.dll +0 -0
- data/lib/net-1.1/framework/nunit.framework.xml +9321 -0
- data/lib/net-1.1/framework/nunit.mocks.dll +0 -0
- data/lib/net-1.1/framework/pnunit.framework.dll +0 -0
- data/lib/net-1.1/launcher.log.conf +18 -0
- data/lib/net-1.1/{fit.dll → lib/fit.dll} +0 -0
- data/lib/net-1.1/lib/log4net.dll +0 -0
- data/lib/net-1.1/lib/nunit-console-runner.dll +0 -0
- data/lib/net-1.1/lib/nunit.core.dll +0 -0
- data/lib/net-1.1/lib/nunit.core.interfaces.dll +0 -0
- data/lib/net-1.1/lib/nunit.fixtures.dll +0 -0
- data/lib/net-1.1/lib/nunit.util.dll +0 -0
- data/lib/net-1.1/nunit-agent.exe +0 -0
- data/lib/net-1.1/{nunit.exe.config → nunit-agent.exe.config} +21 -55
- data/lib/net-1.1/nunit-console.exe +0 -0
- data/lib/net-1.1/nunit-console.exe.config +19 -49
- data/lib/net-1.1/nunit.framework.dll +0 -0
- data/lib/net-1.1/pnunit-agent.exe +0 -0
- data/lib/net-1.1/pnunit-agent.exe.config +87 -0
- data/lib/net-1.1/pnunit-launcher.exe +0 -0
- data/lib/net-1.1/pnunit-launcher.exe.config +87 -0
- data/lib/net-1.1/pnunit.framework.dll +0 -0
- data/lib/net-1.1/pnunit.tests.dll +0 -0
- data/lib/net-1.1/runpnunit.bat +2 -0
- data/lib/net-1.1/test.conf +24 -0
- data/lib/net-1.1/{loadtest-assembly.dll → tests/loadtest-assembly.dll} +0 -0
- data/lib/net-1.1/tests/mock-assembly.dll +0 -0
- data/lib/net-1.1/tests/nonamespace-assembly.dll +0 -0
- data/lib/net-1.1/tests/nunit-console.tests.dll +0 -0
- data/lib/net-1.1/tests/nunit.core.tests.dll +0 -0
- data/lib/net-1.1/tests/nunit.fixtures.tests.dll +0 -0
- data/lib/net-1.1/tests/nunit.framework.dll +0 -0
- data/lib/net-1.1/tests/nunit.framework.tests.dll +0 -0
- data/lib/net-1.1/tests/nunit.mocks.tests.dll +0 -0
- data/lib/net-1.1/{nunit.util.tests.dll → tests/nunit.util.tests.dll} +0 -0
- data/lib/net-1.1/tests/test-assembly.dll +0 -0
- data/lib/net-1.1/tests/test-utilities.dll +0 -0
- data/lib/net-1.1/tests/timing-tests.dll +0 -0
- data/lib/net-2.0/NUnitTests.config +2 -2
- data/lib/net-2.0/NUnitTests.nunit +11 -11
- data/lib/net-2.0/agent.conf +4 -0
- data/lib/net-2.0/agent.log.conf +18 -0
- data/lib/net-2.0/framework/nunit.framework.dll +0 -0
- data/lib/net-2.0/framework/nunit.framework.xml +9803 -0
- data/lib/net-2.0/framework/nunit.mocks.dll +0 -0
- data/lib/net-2.0/framework/pnunit.framework.dll +0 -0
- data/lib/net-2.0/launcher.log.conf +18 -0
- data/lib/{net-1.1 → net-2.0/lib}/Failure.jpg +0 -0
- data/lib/net-2.0/{Success.jpg → lib/Gray.jpg} +0 -0
- data/lib/{net-1.1 → net-2.0/lib}/Ignored.jpg +0 -0
- data/lib/{net-1.1 → net-2.0/lib}/Success.jpg +0 -0
- data/lib/net-2.0/{fit.dll → lib/fit.dll} +0 -0
- data/lib/net-2.0/lib/log4net.dll +0 -0
- data/lib/net-2.0/lib/nunit-console-runner.dll +0 -0
- data/lib/net-2.0/lib/nunit-gui-runner.dll +0 -0
- data/lib/net-2.0/lib/nunit.core.dll +0 -0
- data/lib/net-2.0/lib/nunit.core.interfaces.dll +0 -0
- data/lib/net-2.0/lib/nunit.fixtures.dll +0 -0
- data/lib/net-2.0/lib/nunit.uiexception.dll +0 -0
- data/lib/net-2.0/lib/nunit.uikit.dll +0 -0
- data/lib/net-2.0/lib/nunit.util.dll +0 -0
- data/lib/net-2.0/nunit-agent.exe +0 -0
- data/lib/net-2.0/nunit-agent.exe.config +87 -0
- data/lib/net-2.0/nunit-console-x86.exe +0 -0
- data/lib/net-2.0/nunit-console-x86.exe.config +19 -49
- data/lib/net-2.0/nunit-console.exe +0 -0
- data/lib/net-2.0/nunit-console.exe.config +19 -49
- data/lib/net-2.0/nunit-x86.exe +0 -0
- data/lib/net-2.0/nunit-x86.exe.config +48 -74
- data/lib/net-2.0/nunit.exe +0 -0
- data/lib/net-2.0/nunit.exe.config +48 -74
- data/lib/net-2.0/nunit.framework.dll +0 -0
- data/lib/net-2.0/pnunit-agent.exe +0 -0
- data/lib/net-2.0/pnunit-agent.exe.config +87 -0
- data/lib/net-2.0/pnunit-launcher.exe +0 -0
- data/lib/net-2.0/pnunit-launcher.exe.config +87 -0
- data/lib/net-2.0/pnunit.framework.dll +0 -0
- data/lib/net-2.0/pnunit.tests.dll +0 -0
- data/lib/net-2.0/runpnunit.bat +2 -0
- data/lib/net-2.0/test.conf +24 -0
- data/lib/net-2.0/{loadtest-assembly.dll → tests/loadtest-assembly.dll} +0 -0
- data/lib/net-2.0/tests/mock-assembly.dll +0 -0
- data/lib/net-2.0/tests/nonamespace-assembly.dll +0 -0
- data/lib/net-2.0/tests/nunit-console.tests.dll +0 -0
- data/lib/net-2.0/tests/nunit-gui.tests.dll +0 -0
- data/lib/net-2.0/tests/nunit.core.tests.dll +0 -0
- data/lib/net-2.0/tests/nunit.fixtures.tests.dll +0 -0
- data/lib/net-2.0/tests/nunit.framework.dll +0 -0
- data/lib/net-2.0/tests/nunit.framework.tests.dll +0 -0
- data/lib/net-2.0/tests/nunit.mocks.tests.dll +0 -0
- data/lib/net-2.0/tests/nunit.uiexception.tests.dll +0 -0
- data/lib/net-2.0/tests/nunit.uikit.tests.dll +0 -0
- data/lib/net-2.0/{nunit.util.tests.dll → tests/nunit.util.tests.dll} +0 -0
- data/lib/net-2.0/tests/test-assembly.dll +0 -0
- data/lib/net-2.0/tests/test-utilities.dll +0 -0
- data/lib/net-2.0/tests/timing-tests.dll +0 -0
- metadata +131 -74
- data/docs/classicModel.html +0 -92
- data/docs/customAsserts.html +0 -115
- data/docs/features.html +0 -75
- data/docs/files/Thumbs.db +0 -0
- data/docs/platformSupport.html +0 -99
- data/lib/net-1.1/mock-assembly.dll +0 -0
- data/lib/net-1.1/nonamespace-assembly.dll +0 -0
- data/lib/net-1.1/notestfixtures-assembly.dll +0 -0
- data/lib/net-1.1/nunit-console-runner.dll +0 -0
- data/lib/net-1.1/nunit-console.tests.dll +0 -0
- data/lib/net-1.1/nunit-gui-runner.dll +0 -0
- data/lib/net-1.1/nunit-gui.tests.dll +0 -0
- data/lib/net-1.1/nunit.core.dll +0 -0
- data/lib/net-1.1/nunit.core.extensions.dll +0 -0
- data/lib/net-1.1/nunit.core.interfaces.dll +0 -0
- data/lib/net-1.1/nunit.core.tests.dll +0 -0
- data/lib/net-1.1/nunit.exe +0 -0
- data/lib/net-1.1/nunit.extensions.tests.dll +0 -0
- data/lib/net-1.1/nunit.fixtures.dll +0 -0
- data/lib/net-1.1/nunit.fixtures.tests.dll +0 -0
- data/lib/net-1.1/nunit.framework.extensions.dll +0 -0
- data/lib/net-1.1/nunit.framework.tests.dll +0 -0
- data/lib/net-1.1/nunit.framework.xml +0 -5622
- data/lib/net-1.1/nunit.mocks.dll +0 -0
- data/lib/net-1.1/nunit.mocks.tests.dll +0 -0
- data/lib/net-1.1/nunit.uikit.dll +0 -0
- data/lib/net-1.1/nunit.uikit.tests.dll +0 -0
- data/lib/net-1.1/nunit.util.dll +0 -0
- data/lib/net-1.1/test-assembly.dll +0 -0
- data/lib/net-1.1/test-utilities.dll +0 -0
- data/lib/net-1.1/timing-tests.dll +0 -0
- data/lib/net-2.0/Failure.jpg +0 -0
- data/lib/net-2.0/Ignored.jpg +0 -0
- data/lib/net-2.0/mock-assembly.dll +0 -0
- data/lib/net-2.0/nonamespace-assembly.dll +0 -0
- data/lib/net-2.0/notestfixtures-assembly.dll +0 -0
- data/lib/net-2.0/nunit-console-runner.dll +0 -0
- data/lib/net-2.0/nunit-console.tests.dll +0 -0
- data/lib/net-2.0/nunit-gui-runner.dll +0 -0
- data/lib/net-2.0/nunit-gui.tests.dll +0 -0
- data/lib/net-2.0/nunit.core.dll +0 -0
- data/lib/net-2.0/nunit.core.extensions.dll +0 -0
- data/lib/net-2.0/nunit.core.interfaces.dll +0 -0
- data/lib/net-2.0/nunit.core.tests.dll +0 -0
- data/lib/net-2.0/nunit.extensions.tests.dll +0 -0
- data/lib/net-2.0/nunit.fixtures.dll +0 -0
- data/lib/net-2.0/nunit.fixtures.tests.dll +0 -0
- data/lib/net-2.0/nunit.framework.extensions.dll +0 -0
- data/lib/net-2.0/nunit.framework.tests.dll +0 -0
- data/lib/net-2.0/nunit.framework.xml +0 -5622
- data/lib/net-2.0/nunit.mocks.dll +0 -0
- data/lib/net-2.0/nunit.mocks.tests.dll +0 -0
- data/lib/net-2.0/nunit.uikit.dll +0 -0
- data/lib/net-2.0/nunit.uikit.tests.dll +0 -0
- data/lib/net-2.0/nunit.util.dll +0 -0
- data/lib/net-2.0/test-assembly.dll +0 -0
- data/lib/net-2.0/test-utilities.dll +0 -0
- data/lib/net-2.0/timing-tests.dll +0 -0
data/docs/range.html
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
<!-- saved from url=(0014)about:internet --><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
|
2
|
+
<html>
|
3
|
+
<!-- Standard Head Part -->
|
4
|
+
<head>
|
5
|
+
<title>NUnit - Range</title>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
7
|
+
<meta http-equiv="Content-Language" content="en-US">
|
8
|
+
<link rel="stylesheet" type="text/css" href="nunit.css">
|
9
|
+
<link rel="shortcut icon" href="favicon.ico">
|
10
|
+
</head>
|
11
|
+
<!-- End Standard Head Part -->
|
12
|
+
|
13
|
+
<body>
|
14
|
+
|
15
|
+
<!-- Standard Header for NUnit.org -->
|
16
|
+
<div id="header">
|
17
|
+
<a id="logo" href="http://www.nunit.org"><img src="img/logo.gif" alt="NUnit.org" title="NUnit.org"></a>
|
18
|
+
<div id="nav">
|
19
|
+
<a href="http://www.nunit.org">NUnit</a>
|
20
|
+
<a class="active" href="index.html">Documentation</a>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
<!-- End of Header -->
|
24
|
+
|
25
|
+
<div id="content">
|
26
|
+
|
27
|
+
<h3>RangeAttribute (NUnit 2.5)</h3>
|
28
|
+
|
29
|
+
<p>The <b>RangeAttribute</b> is used to specify a range of values to be provided
|
30
|
+
for an individual parameter of a parameterized test method. Since
|
31
|
+
NUnit combines the data provided for each parameter into a set of
|
32
|
+
test cases, data must be provided for all parameters if it is
|
33
|
+
provided for any of them.
|
34
|
+
|
35
|
+
<p>By default, NUnit creates test cases from all possible combinations
|
36
|
+
of the datapoints provided on parameters - the combinatorial approach.
|
37
|
+
This default may be modified by use of specific attributes on the
|
38
|
+
test method itself.
|
39
|
+
|
40
|
+
<p>RangeAttribute supports the following constructors:
|
41
|
+
|
42
|
+
<div class="code"><pre>
|
43
|
+
public RangeAttribute( int from, int to );
|
44
|
+
public RangeAttribute( int from, int to, int step );
|
45
|
+
public RangeAttribute( long from, long to, long step );
|
46
|
+
public RangeAttribute( float from, float to, float step );
|
47
|
+
public RangeAttribute( double from, double to, double step );
|
48
|
+
</pre></div>
|
49
|
+
|
50
|
+
<h4>Example</h4>
|
51
|
+
|
52
|
+
<p>The following test will be executed nine times, as follows:
|
53
|
+
<pre>
|
54
|
+
MyTest(1, 0.2)
|
55
|
+
MyTest(1, 0.4)
|
56
|
+
MyTest(1, 0.6)
|
57
|
+
MyTest(2, 0.2)
|
58
|
+
MyTest(2, 0.4)
|
59
|
+
MyTest(2, 0.6)
|
60
|
+
MyTest(3, 0.2)
|
61
|
+
MyTest(3, 0.4)
|
62
|
+
MyTest(3, 0.6)
|
63
|
+
</pre>
|
64
|
+
<div class="code"><pre>
|
65
|
+
[Test]
|
66
|
+
public void MyTest(
|
67
|
+
[Values(1,2,3) int x,
|
68
|
+
[Range(0.2,0.6,0.2] double d)
|
69
|
+
{
|
70
|
+
...
|
71
|
+
}
|
72
|
+
</pre></div>
|
73
|
+
|
74
|
+
<h4>See also...</h4>
|
75
|
+
<ul>
|
76
|
+
<li><a href="values.html">ValuesAttribute</a><li><a href="random.html">RandomAttribute</a><li><a href="sequential.html">SequentialAttribute</a><li><a href="combinatorial.html">CombinatorialAttribute</a><li><a href="pairwise.html">PairwiseAttribute</a></ul>
|
77
|
+
|
78
|
+
</div>
|
79
|
+
|
80
|
+
<!-- Submenu -->
|
81
|
+
<div id="subnav">
|
82
|
+
<ul>
|
83
|
+
<li><a href="index.html">NUnit 2.5</a></li>
|
84
|
+
<ul>
|
85
|
+
<li><a href="getStarted.html">Getting Started</a></li>
|
86
|
+
<li><a href="assertions.html">Assertions</a></li>
|
87
|
+
<li><a href="constraintModel.html">Constraints</a></li>
|
88
|
+
<li><a href="attributes.html">Attributes</a></li>
|
89
|
+
<ul>
|
90
|
+
<li><a href="category.html">Category</a></li>
|
91
|
+
<li><a href="combinatorial.html">Combinatorial</a></li>
|
92
|
+
<li><a href="culture.html">Culture</a></li>
|
93
|
+
<li><a href="datapoint.html">Datapoint(s)</a></li>
|
94
|
+
<li><a href="description.html">Description</a></li>
|
95
|
+
<li><a href="exception.html">Exception</a></li>
|
96
|
+
<li><a href="explicit.html">Explicit</a></li>
|
97
|
+
<li><a href="ignore.html">Ignore</a></li>
|
98
|
+
<li><a href="maxtime.html">Maxtime</a></li>
|
99
|
+
<li><a href="pairwise.html">Pairwise</a></li>
|
100
|
+
<li><a href="platform.html">Platform</a></li>
|
101
|
+
<li><a href="property.html">Property</a></li>
|
102
|
+
<li><a href="random.html">Random</a></li>
|
103
|
+
<li id="current"><a href="range.html">Range</a></li>
|
104
|
+
<li><a href="repeat.html">Repeat</a></li>
|
105
|
+
<li><a href="requiredAddin.html">RequiredAddin</a></li>
|
106
|
+
<li><a href="requiresMTA.html">Requires MTA</a></li>
|
107
|
+
<li><a href="requiresSTA.html">Requires STA</a></li>
|
108
|
+
<li><a href="requiresThread.html">Requires Thread</a></li>
|
109
|
+
<li><a href="sequential.html">Sequential</a></li>
|
110
|
+
<li><a href="setCulture.html">SetCulture</a></li>
|
111
|
+
<li><a href="setup.html">Setup</a></li>
|
112
|
+
<li><a href="setupFixture.html">SetupFixture</a></li>
|
113
|
+
<li><a href="suite.html">Suite</a></li>
|
114
|
+
<li><a href="teardown.html">Teardown</a></li>
|
115
|
+
<li><a href="test.html">Test</a></li>
|
116
|
+
<li><a href="testCase.html">TestCase</a></li>
|
117
|
+
<li><a href="testCaseSource.html">TestCaseSource</a></li>
|
118
|
+
<li><a href="testFixture.html">TestFixture</a></li>
|
119
|
+
<li><a href="fixtureSetup.html">TestFixtureSetUp</a></li>
|
120
|
+
<li><a href="fixtureTeardown.html">TestFixtureTearDown</a></li>
|
121
|
+
<li><a href="theory.html">Theory</a></li>
|
122
|
+
<li><a href="timeout.html">Timeout</a></li>
|
123
|
+
<li><a href="values.html">Values</a></li>
|
124
|
+
<li><a href="valueSource.html">ValueSource</a></li>
|
125
|
+
</ul>
|
126
|
+
<li><a href="nunit-console.html">Console Runner</a></li>
|
127
|
+
<li><a href="nunit-gui.html">Gui Runner</a></li>
|
128
|
+
<li><a href="configFiles.html">Configuration Files</a></li>
|
129
|
+
<li><a href="pnunit.html">PNUnit</a></li>
|
130
|
+
<li><a href="multiAssembly.html">Multiple Assemblies</a></li>
|
131
|
+
<li><a href="vsSupport.html">Visual Studio Support</a></li>
|
132
|
+
<li><a href="extensibility.html">Extensibility</a></li>
|
133
|
+
<li><a href="releaseNotes.html">Release Notes</a></li>
|
134
|
+
<li><a href="samples.html">Samples</a></li>
|
135
|
+
<li><a href="license.html">License</a></li>
|
136
|
+
</ul>
|
137
|
+
</ul>
|
138
|
+
</div>
|
139
|
+
<!-- End of Submenu -->
|
140
|
+
|
141
|
+
|
142
|
+
<!-- Standard Footer for NUnit.org -->
|
143
|
+
<div id="footer">
|
144
|
+
Copyright © 2009 Charlie Poole. All Rights Reserved.
|
145
|
+
</div>
|
146
|
+
<!-- End of Footer -->
|
147
|
+
|
148
|
+
</body>
|
149
|
+
</html>
|
@@ -0,0 +1,861 @@
|
|
1
|
+
<!-- saved from url=(0014)about:internet --><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
|
2
|
+
<html>
|
3
|
+
<!-- Standard Head Part -->
|
4
|
+
<head>
|
5
|
+
<title>NUnit - ReleaseDetail</title>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
7
|
+
<meta http-equiv="Content-Language" content="en-US">
|
8
|
+
<link rel="stylesheet" type="text/css" href="nunit.css">
|
9
|
+
<link rel="shortcut icon" href="favicon.ico">
|
10
|
+
</head>
|
11
|
+
<!-- End Standard Head Part -->
|
12
|
+
|
13
|
+
<body>
|
14
|
+
|
15
|
+
<!-- Standard Header for NUnit.org -->
|
16
|
+
<div id="header">
|
17
|
+
<a id="logo" href="http://www.nunit.org"><img src="img/logo.gif" alt="NUnit.org" title="NUnit.org"></a>
|
18
|
+
<div id="nav">
|
19
|
+
<a href="http://www.nunit.org">NUnit</a>
|
20
|
+
<a class="active" href="index.html">Documentation</a>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
<!-- End of Header -->
|
24
|
+
|
25
|
+
<div id="content">
|
26
|
+
|
27
|
+
<style><!--
|
28
|
+
li { padding-bottom: .5em; }
|
29
|
+
ul ul li { padding-bottom: 0; }
|
30
|
+
dt { font-weight: bold }
|
31
|
+
--></style>
|
32
|
+
|
33
|
+
<h3>NUnit 2.5 Final Release - Version 2.5.0.9122 - May 2, 2009</h3>
|
34
|
+
|
35
|
+
<div style="max-width:660px;text-align:right">
|
36
|
+
<a href="releaseNotes.html">View Combined 2.5 Changes</a>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<h4>Framework</h4>
|
40
|
+
|
41
|
+
<ul>
|
42
|
+
<li>A new syntax element, <b>Matches(Constraint)</b>, allows use of
|
43
|
+
custom constraints, predicates or lambda expressions in constraint expressions.
|
44
|
+
|
45
|
+
<li>The <b>MessageMatch</b> enum used with <b>ExpectedExceptionAttribute</b>
|
46
|
+
has been extended with a new value <b>StartsWith</b>, indicating that the
|
47
|
+
exception message must start with the string provided.
|
48
|
+
|
49
|
+
<li><b>TestCaseAttribute</b> now supports a <b>MessageMatch</b>
|
50
|
+
property.
|
51
|
+
</ul>
|
52
|
+
|
53
|
+
<h4>Gui</h4>
|
54
|
+
|
55
|
+
<ul>
|
56
|
+
<li>The File menu now allows selecting an alternate runtime,
|
57
|
+
such as Mono, on a machine with multiple CLR implementations
|
58
|
+
installed. This feature is still considered experimental and
|
59
|
+
may change in the future.
|
60
|
+
|
61
|
+
<li>The combo box in the Project Editor allowing selection of
|
62
|
+
a particular runtime type such as Mono for loading the test
|
63
|
+
has been re-enabled.
|
64
|
+
</ul>
|
65
|
+
|
66
|
+
<h4>Bug Fixes</h4>
|
67
|
+
|
68
|
+
<ul>
|
69
|
+
<li>Provided a workaround to a Mono 2.4 bug in handling remote
|
70
|
+
references to an interface, where the provider is running under
|
71
|
+
MS .NET and the implementation is explicit.
|
72
|
+
|
73
|
+
<li>Fixed a problem with the display of line numbers from a German
|
74
|
+
language stack trace, with lines terminating in a period.
|
75
|
+
|
76
|
+
<li> The Console Runner display now shows the settings for ProcessModel,
|
77
|
+
DomainUsage and RuntimeFramework actually provided, before resolution
|
78
|
+
of any defaults.
|
79
|
+
|
80
|
+
<li> Removed references in the docs to pages that no longer exist.
|
81
|
+
</ul>
|
82
|
+
|
83
|
+
<h3>NUnit 2.5 Release Candidate - Version 2.5.0.9117 - April 27, 2009</h3>
|
84
|
+
|
85
|
+
<h4>General</h4>
|
86
|
+
|
87
|
+
<ul>
|
88
|
+
<li>The installation now uses a 'lib' subdirectory to hold dlls.
|
89
|
+
|
90
|
+
<li>The build script target names have been changed to make more sense.
|
91
|
+
In particular, 'package' now builds the default package and
|
92
|
+
targets not intended to be called directly are no longer listed
|
93
|
+
as 'Main Targets' by the -projecthelp option.
|
94
|
+
</ul>
|
95
|
+
|
96
|
+
<h4>Framework</h4>
|
97
|
+
|
98
|
+
<ul>
|
99
|
+
<li>The following Constraints now use the NUnit definition
|
100
|
+
of equality in comparing items, which may lead to changed behavior
|
101
|
+
of some tests.
|
102
|
+
<ul><b>
|
103
|
+
<li>UniqueItemsConstraint
|
104
|
+
<li>CollectionContainsConstraint
|
105
|
+
<li>CollectionEquivalentConstraint
|
106
|
+
<li>CollectionSubsetConstraint
|
107
|
+
</b></ul>
|
108
|
+
The constraints listed now accept the <b>IgnoreCase</b> and <b>Using</b>
|
109
|
+
modifiers, which work exactly as they do with <b>EqualConstraint</b>
|
110
|
+
</ul>
|
111
|
+
|
112
|
+
<h4>Core</h4>
|
113
|
+
|
114
|
+
<ul>
|
115
|
+
<li>Caching is now used to reduce the time required to load tests.
|
116
|
+
</ul>
|
117
|
+
|
118
|
+
<h4>Gui</h4>
|
119
|
+
|
120
|
+
<ul>
|
121
|
+
<li>A new submenu under <b>File</b> allows selecting a runtime version
|
122
|
+
under which to reload the tests. Reloading in this way does not affect
|
123
|
+
any runtime version setting in the project file.
|
124
|
+
|
125
|
+
<li>The project editor now provides a combo box listing known versions
|
126
|
+
of the runtime. Other versions may still be entered in the edit box.
|
127
|
+
Cross-CLR execution (for example, running Mono from .NET) has
|
128
|
+
been disabled in the Gui, since it isn't yet implemented.
|
129
|
+
|
130
|
+
<li>The new stack trace display now follows the NUnit Font settings.
|
131
|
+
The stack display uses the general gui font, while the source code
|
132
|
+
display uses the fixed font.
|
133
|
+
|
134
|
+
<li>The separate settings for Recent Files under .NET 1.1
|
135
|
+
and .NET 2.0 have been combined, since the Gui now runs exclusively
|
136
|
+
under .NET 2.0.
|
137
|
+
|
138
|
+
<li>The time required to restore the visual state of the tree after
|
139
|
+
reloading has been substantially reduced, especially for large numbers
|
140
|
+
of tests.
|
141
|
+
</ul>
|
142
|
+
|
143
|
+
<h4>Bug Fixes</h4>
|
144
|
+
|
145
|
+
<ul>
|
146
|
+
<li>Use of a long assembly name for the ApplicationName of the AppDomain
|
147
|
+
was causing excessively long paths in the shadow cache.
|
148
|
+
|
149
|
+
<li>The <b>Using</b> modifier of <b>EqualConstraint</b> now works as
|
150
|
+
expected for string operands.
|
151
|
+
|
152
|
+
<li><b>TestCaseAttribute.ExpectedExceptionMessage</b> is no longer ignored.
|
153
|
+
|
154
|
+
<li>The max number of files setting was not being saved when modified
|
155
|
+
in the Gui Settings dialog.
|
156
|
+
|
157
|
+
<li>As a temporary fix, the pnunit.tests.dll has been moved to the
|
158
|
+
same directory as pnunit-agent.exe and pnunit-launcher.exe, since
|
159
|
+
pnunit tests don't allow for setting an appbase separate from the
|
160
|
+
location of the test assembly.
|
161
|
+
</ul>
|
162
|
+
|
163
|
+
<h3>NUnit 2.5 Beta 3 Release - Version 2.5.0.9096 - April 6, 2009</h3>
|
164
|
+
|
165
|
+
<h4>General</h4>
|
166
|
+
|
167
|
+
<ul>
|
168
|
+
<li>The Gui is now built against .NET 2.0 only. Tests may still
|
169
|
+
be run under .NET 1.x by running in a separate process.
|
170
|
+
|
171
|
+
<li>The Visual Studio 2003 solution has been removed. Framework
|
172
|
+
and other components may still be built under .NET 1.x through
|
173
|
+
the NAnt script.
|
174
|
+
|
175
|
+
<li>The nunit.framework.extensions assembly has been removed
|
176
|
+
from the build.
|
177
|
+
</ul>
|
178
|
+
|
179
|
+
<h4>Framework</h4>
|
180
|
+
|
181
|
+
<ul>
|
182
|
+
<li><b>EqualConstraint</b> has been enhanced with
|
183
|
+
several new modifiers, which may be used immediately after
|
184
|
+
the Within(...) modifier to indicate how a numeric tolerance value
|
185
|
+
should be interpreted.
|
186
|
+
<ul>
|
187
|
+
<li><b>Ulps</b> = as units in the last place (floating point only)
|
188
|
+
<li><b>Percent</b> = as a percentage of expected value
|
189
|
+
<li><b>Days</b> = as a TimeSpan in days
|
190
|
+
<li><b>Hours</b> = as a TimeSpan in hours
|
191
|
+
<li><b>Minutes</b> = as a TimeSpan in minutes
|
192
|
+
<li><b>Seconds</b> = as a TimeSpan in seconds
|
193
|
+
<li><b>Milliseconds</b> = as a TimeSpan in milliseconds
|
194
|
+
<li><b>Ticks</b> = as a TimeSpan in ticks
|
195
|
+
</ul>
|
196
|
+
|
197
|
+
<li>The comparison constraints (<b>GreaterThan</b>, <b>LessThan</b>, etc.),
|
198
|
+
<b>RangeConstraint</b> and <b>CollectionOrderedConstraint</b> may now be used
|
199
|
+
with objects that implement <b>IComparable<T></b>.
|
200
|
+
|
201
|
+
<li>The syntax used for specifying that a collection is ordered has changed.
|
202
|
+
<b>Is.Ordered</b> is now a property. The property name to use for ordering
|
203
|
+
is specified using <b>Is.Ordered.By(name)</b>.
|
204
|
+
|
205
|
+
<li>The following constraints now accept a <b>Using</b> modifier to indicate
|
206
|
+
that a user-specified comparer should be used:
|
207
|
+
<ul><b>
|
208
|
+
<li>EqualConstraint
|
209
|
+
<li>GreaterThanConstraint
|
210
|
+
<li>GreaterThanOrEqualConstraint
|
211
|
+
<li>LessThanConstraint
|
212
|
+
<li>LessThanOrEqualConstraint
|
213
|
+
<li>RangeConstraint
|
214
|
+
<li>CollectionOrderedConstraint
|
215
|
+
</b></ul>
|
216
|
+
The provided comparer may be any of the following:
|
217
|
+
<ul><b>
|
218
|
+
<li>IComparer
|
219
|
+
<li>IComparer<T>
|
220
|
+
<li>Comparison<T>
|
221
|
+
</b></ul>
|
222
|
+
In addition, <b>EqualConstraint</b> may use:
|
223
|
+
<ul><b>
|
224
|
+
<li>IEqualityComparer
|
225
|
+
<li>IEqualityComparer<T>
|
226
|
+
</b></ul>
|
227
|
+
</ul>
|
228
|
+
|
229
|
+
<h3>NUnit 2.5 Beta 2 Release - Version 2.5.0.9015 - January 15, 2009</h3>
|
230
|
+
|
231
|
+
<h4>Framework</h4>
|
232
|
+
|
233
|
+
<ul>
|
234
|
+
<li>NUnit now includes an implementation of <b>Theories</b>, similar to what
|
235
|
+
is found in JUnit. Support for Theories is provided by the
|
236
|
+
<b>Theory</b>, <b>Datapoint</b> and <b>Datapoints</b> attributes and by
|
237
|
+
the <b>Assume.That</b> method. For more information and further links,
|
238
|
+
see the <a href="theory.html">TheoryAttribute</a>
|
239
|
+
documentation page.
|
240
|
+
<li>AssertionHelper has been updated so that the Expect overloads now
|
241
|
+
include the signatures newly introduced for Assert.That.
|
242
|
+
<li>The code for Assert is now generated. This is in addition to the files
|
243
|
+
that were generated in beta-1.
|
244
|
+
<li><b>AfterConstraint</b> has been renamed to <b>DelayedConstraint</b>.
|
245
|
+
</ul>
|
246
|
+
|
247
|
+
<h4>Console</h4>
|
248
|
+
|
249
|
+
<ul>
|
250
|
+
<li>The console runner now supports a <b>/framework</b> option, which
|
251
|
+
allows running the tests under a different version of the CLR.
|
252
|
+
</ul>
|
253
|
+
|
254
|
+
<h4>Gui</h4>
|
255
|
+
|
256
|
+
<ul>
|
257
|
+
<li>The Gui is now able to display the source code for test or production
|
258
|
+
code from the stack trace, provided the assemblies contain source code
|
259
|
+
information and the source code is available. Contributed by Ir�n�e Hottier.
|
260
|
+
<li>Reloading the tests after changing settings in a way that modifies
|
261
|
+
the shape of the tree is now handled correctly.
|
262
|
+
<li>The Settings Dialog now opens to the page that was last viewed.
|
263
|
+
</ul>
|
264
|
+
|
265
|
+
<h3>NUnit 2.5 Beta 1 Release - Version 2.5.0.8332 - November 27, 2008</h3>
|
266
|
+
|
267
|
+
<h4>General</h4>
|
268
|
+
|
269
|
+
<ul>
|
270
|
+
<li>Most of the code for elements of the constraint
|
271
|
+
syntax is now generated. This allows us to more rapidly deploy new
|
272
|
+
constraints with their corresponding syntax. The file <b>SyntaxElements.txt</b>
|
273
|
+
contains the specifications used in generating the code. At this time,
|
274
|
+
we are including both this file and the generated files with the NUnit source,
|
275
|
+
so that those working in other areas of the code don't have to regenerate
|
276
|
+
them each time they make changes.
|
277
|
+
<li>The nunit.core.extensions assembly has been removed from the build. Features
|
278
|
+
that were previously in that assembly are now in the nunit.core assembly.
|
279
|
+
<li>All third-party addins have been removed from the build and must be
|
280
|
+
downloaded separately from their own sites. An index of such
|
281
|
+
addins is maintained on the NUnit site.
|
282
|
+
</ul>
|
283
|
+
|
284
|
+
<h4>Framework</h4>
|
285
|
+
<ul>
|
286
|
+
<li>New attributes are provided to control use of threads by tests. All of
|
287
|
+
the following may be used on methods, classes or assemblies:
|
288
|
+
<ul>
|
289
|
+
<li><b>RequiresThreadAttribute</b> forces creation of a new thread and
|
290
|
+
may optionally indicate the desired ApartmentState for the thread.
|
291
|
+
<li><b>RequiresSTAAttribute</b> causes the test to run in the STA. A
|
292
|
+
new thread is created only if the parent is not in the STA. On
|
293
|
+
methods, the .NET-provided STAThreadAttribute may also be used.
|
294
|
+
<li><b>RequiresMTAAttribute</b> causes the test to run in the MTA. A
|
295
|
+
new thread is created only if the parent is not in the MTA. On
|
296
|
+
methods, the .NET-provided MTAThreadAttribute may also be used.
|
297
|
+
<li><b>TimeoutAttribute</b> is used to set the timeout for tests. When
|
298
|
+
used on classes or assemblies, the timeout value is used as the
|
299
|
+
default timeout for all subordinate test cases. Test cases with
|
300
|
+
a timeout value run on a separate thread and return a failure
|
301
|
+
message if the timeout is exceeded.
|
302
|
+
</ul>
|
303
|
+
<li>The <b>MaxTimeAttribute</b> specifies a miximum elapsed time for a
|
304
|
+
test case. If the test takes longer, it is reported as a failure.
|
305
|
+
This attribute was previously available as an extension.
|
306
|
+
<br><br>
|
307
|
+
<b>Note:</b> Unlike <b>TimeoutAttribute</b>, <b>MaxTimeAttribute</b>
|
308
|
+
does not cause the test to be cancelled, but merely times it.
|
309
|
+
<li><b>RepeatAttribute</b> causes a test case to be executed multiple
|
310
|
+
times. This attribute was previously available as an extension.
|
311
|
+
<li><b>PairwiseAttribute</b> now works, generating all pairs of each
|
312
|
+
argument value. [In earlier betas, it was unimpemented and simply
|
313
|
+
generated all combinations.]
|
314
|
+
<li><b>PropertyAttribute</b> has been modified internally to use a dictionary
|
315
|
+
of name/value pairs rather than just a single name and value. This feature
|
316
|
+
is not exposed for direct use, but may be accessed by derived attributes
|
317
|
+
that want to apply multiple named values to the test. For a simple
|
318
|
+
example of usage, see the code for <b>RequiredThreadAttribute</b>.
|
319
|
+
<li>The presence of <b>TestCaseSourceAttribute</b> on a method is now
|
320
|
+
sufficient to identify it as a test. As with <b>TestCaseAttribute</b>,
|
321
|
+
use of <b>TestAttribute</b> is optional.
|
322
|
+
<li><b>Assert.That</b> has been extended to allow a delegate or a reference
|
323
|
+
as the argument. By default, these are evaluated before being used by
|
324
|
+
the constraint supplied but some constraints may delay evaluation. The
|
325
|
+
new <b>AfterConstraint</b> is an example.
|
326
|
+
<li>An additional overload of <b>Assert.Throws</b> allows passing a
|
327
|
+
constraint or constraint expression as the first argument.
|
328
|
+
<li>The syntax for AttributeConstraints has been enhanced so that further
|
329
|
+
tests may be applied to properties of the attribute rather than just
|
330
|
+
checking for its existence.
|
331
|
+
<li><b>AfterConstraint</b> allows delaying the application of a constraint
|
332
|
+
until a certain time has passed. In it's simplest form, it replaces
|
333
|
+
use of a Sleep in the code but it also supports polling, which may
|
334
|
+
allow use of a longer maximum time while still keeping the tests as
|
335
|
+
fast as possible. The <b>After</b> modifier is permitted on any
|
336
|
+
constraint, but the delay applies to the entire expression up to the
|
337
|
+
point where <b>After</b> appears.
|
338
|
+
<br><br>
|
339
|
+
<b>Note:</b> Use of After with a simple value makes no sense, since
|
340
|
+
the value will be extracted at the point of call. It's intended use
|
341
|
+
is with delegates and references. If a delegate is used with polling,
|
342
|
+
it may be called multiple times so only methods without side effects
|
343
|
+
should be used in this way.
|
344
|
+
</ul>
|
345
|
+
|
346
|
+
<h4>Core</h4>
|
347
|
+
|
348
|
+
<ul>
|
349
|
+
<li>NUnit now supports running tests in a separate process or in
|
350
|
+
multiple processes per assembly. In addition, tests run in
|
351
|
+
a separate process may use a different runtime version
|
352
|
+
from that under which NUnit is running.
|
353
|
+
<br><br>
|
354
|
+
<b>Note:</b> In the Beta release, execution of tests under Mono
|
355
|
+
from a copy of NUnit that is running under .NET is not yet supported.
|
356
|
+
</ul>
|
357
|
+
|
358
|
+
<h4>Console</h4>
|
359
|
+
|
360
|
+
<ul>
|
361
|
+
<li>The new <b>/process:xxxxx</b> command line option is used to run
|
362
|
+
tests in a separate process or in multiple processes per assembly.
|
363
|
+
<li>A new commandline option, <b>/timeout:nnnn</b> allows you to specify a
|
364
|
+
default timeout value, which is applied to each test case in the run without
|
365
|
+
a Timeout specified.
|
366
|
+
</ul>
|
367
|
+
|
368
|
+
<h4>Gui</h4>
|
369
|
+
|
370
|
+
<ul>
|
371
|
+
<li>The Assembly Info display now uses a scrolling text box and has
|
372
|
+
been enhanced to show information about the Process and AppDomain
|
373
|
+
in which the test is running and the runtime version under that
|
374
|
+
is being used.
|
375
|
+
<li>The Project Editor now allows setting the ProcessModel and
|
376
|
+
DomainUsage for a project to control how that project is
|
377
|
+
loaded and run. It also supports setting a target runtime
|
378
|
+
framework for each configuration. If the target runtime is
|
379
|
+
different from the runtime under which NUnit is running, the
|
380
|
+
tests will be run automatically in a separate process under
|
381
|
+
the target runtime.
|
382
|
+
<li>The Project Editor no longer reloads the tests as each
|
383
|
+
individual change is made. Tests are reloaded after the
|
384
|
+
editor is closed and only if changes have been made to
|
385
|
+
the overall project configuration or to the active
|
386
|
+
configuration.
|
387
|
+
<li>The "Options" dialog is now called "Settings."
|
388
|
+
</ul>
|
389
|
+
|
390
|
+
<h4>Extensibility</h4>
|
391
|
+
|
392
|
+
<ul>
|
393
|
+
<li>The implementation of constraints has been changed so that it is no
|
394
|
+
longer necessary to create an additional "Modifier" class when a
|
395
|
+
custom constraint takes modifiers. If you simply implement each modifier
|
396
|
+
as a property or method returning the object itself, it will be
|
397
|
+
usable in the full range of constraint expressions.
|
398
|
+
<br><br>
|
399
|
+
<b>Note:</b> Although you can readily create custom constraints,
|
400
|
+
this release of NUnit still lacks the ability to create new syntactic
|
401
|
+
elements without rebuilding the framework.
|
402
|
+
</ul>
|
403
|
+
|
404
|
+
<h4>Bug Fixes</h4>
|
405
|
+
|
406
|
+
<ul>
|
407
|
+
<li>Loading a single assembly and then adding another assembly using
|
408
|
+
the Add Assembly menu item was not working correctly.
|
409
|
+
<li>Reloading tests after settings changes was failing when the
|
410
|
+
new settings changed the shape of the tree in such a way
|
411
|
+
that the new tests didn't match the old ones correctly.
|
412
|
+
<li>The Reload Project menu item was followed by a prompt asking
|
413
|
+
if the current project state should be saved first and making
|
414
|
+
the reload work in an unexpected way if you answered yes.
|
415
|
+
<li>A class without a TestFixture attribute, containing only
|
416
|
+
TestCase methods, without any Tests, was not recognized as
|
417
|
+
a test fixture.
|
418
|
+
<li>Assert.DoesNotThrow was failing to display a user message.
|
419
|
+
<li>Xml documentation for Assert.IsNotEmpty and Assert.AreEqual
|
420
|
+
was incorrect.
|
421
|
+
<li>CollectionAssert.AreEqual and EqualConstraint were not
|
422
|
+
working with IEnumerables that were not also Collections.
|
423
|
+
<li>PlatformAttribute now distinguishes correctly between
|
424
|
+
Vista and Windows 2008 Server.
|
425
|
+
</ul>
|
426
|
+
|
427
|
+
<h3>NUnit 2.5 Alpha 4 Release - Version 2.5.0.8528 - September 14, 2008</h3>
|
428
|
+
|
429
|
+
<h4>Framework</h4>
|
430
|
+
<ul>
|
431
|
+
<li>Use of the TestFixtureAttribute is now optional in designating
|
432
|
+
classes that contain tests.
|
433
|
+
<li>More than one method may now be marked with the <b>SetUp</b>, <b>TearDown</b>,
|
434
|
+
<b>TestFixtureSetUp</b> and <b>TestFixtureTearDown</b> attributes. Setups
|
435
|
+
in a base class are executed before those in a derived class and teardowns
|
436
|
+
are executed in the reverse order. If there are multiple setups or teardowns
|
437
|
+
defined at the same level, the order is unspecified so this practice is
|
438
|
+
not generally recommended.
|
439
|
+
<li>The <b>FactoryAttribute</b> and <b>TestCaseFactoryAttribute</b> introduced
|
440
|
+
in alhpa-3 have been removed. The new <b>TestCaseSourceAttribute</b> allows
|
441
|
+
specification of the name of the source of test cases and - optionally - the
|
442
|
+
type providing the source if it is not the same as the type that contains the
|
443
|
+
test. Only one source may be specified per attribute but the attribute may be
|
444
|
+
applied more than once to indicate multiple sources.
|
445
|
+
<li>It is now possibe to specify Categories and Properties on test cases
|
446
|
+
defined using the TestCaseData class.
|
447
|
+
<li>Named fields, properties or methods may be used to provide values for
|
448
|
+
individual method parameters using the new <b>ValueSourceAttribute</b>.
|
449
|
+
<li>New constraints and corresponding syntactic constructs are provided:
|
450
|
+
<ul>
|
451
|
+
<li><b>Is.InRange</b> tests that a value lies within a specified range.
|
452
|
+
<li><b>Has.Attribute()</b> tests for the presence of a specified attribute
|
453
|
+
on a type.
|
454
|
+
<li><b>Is.AssignableTo</b> allows reversing the operands of AssignableFrom
|
455
|
+
for increased clarity in the code and in any error messages when the
|
456
|
+
actual value is of the derived type.
|
457
|
+
<li><b>Throws.Exception</b> allows testing the exception thrown by a
|
458
|
+
delegate in place and provides the ability to make arbitrary tests
|
459
|
+
on the caught exception. <b>Throws.TypeOf()</b> and <b>Throws.InstanceOf()</b>
|
460
|
+
are provided as shorthand for the commonly used <b>Throws.Exception.TypeOf()</b>
|
461
|
+
and <b>Throws.Exception.InstanceOf</b>.
|
462
|
+
<li><b>Throws.Nothing</b> provides for testing that a delegate does
|
463
|
+
not throw. While it doesn't do much, it serves the purpose of
|
464
|
+
converting an unexpected error into a test failure.
|
465
|
+
</ul>
|
466
|
+
<li>The parsing of constraint expressions written using the fluent interface
|
467
|
+
has been reorganized internally, with the following benefits:
|
468
|
+
<ul>
|
469
|
+
<li>Meaningless sequences like "...Null.Null..." or "...And.Or..."
|
470
|
+
will no longer compile - the NUnit tests actually verify this
|
471
|
+
by attempting to compile them.
|
472
|
+
<li>Syntax modifiers like <b>Within</b> and <b>IgnoreCase</b> are
|
473
|
+
now only accepted - and shown by intellisense - on constraints that
|
474
|
+
actually make use of them.
|
475
|
+
<li>New <b>And</b> and <b>Or</b> infix operators are provided.
|
476
|
+
<li>The <b>With</b> provides some ability to group constraints.
|
477
|
+
</ul>
|
478
|
+
|
479
|
+
<p><p><b>Note:</b> Operators are evaluated in the following order:
|
480
|
+
<ol>
|
481
|
+
<li>Postfix modifiers (highest)
|
482
|
+
<li>Not Operator
|
483
|
+
<li>And operator (see below)
|
484
|
+
<li>Or operator (see below)
|
485
|
+
<li>With operator
|
486
|
+
<li>Some, None and All operators
|
487
|
+
<li>And operator when followed directly by Some, None or All
|
488
|
+
<li>Or operator when followed directly by Some, None or All
|
489
|
+
<li>Overloaded operator &
|
490
|
+
<li>Overloaded operator | (lowest)
|
491
|
+
</ol>
|
492
|
+
Operators of equal precedence associate left to right.
|
493
|
+
|
494
|
+
<li>The "syntax helper" classes, <b>Is</b>, <b>Has</b>, <b>Text</b> and
|
495
|
+
<b>List</b> have been moved to the NUnit.Framework namespace, since they
|
496
|
+
seem to have entered the mainstream.
|
497
|
+
<li>NUnit 2.5 is able to recognize, load and run NUnitLite tests.
|
498
|
+
<li>PropertyConstraint now works with Types when testing for the
|
499
|
+
existence of a named property.
|
500
|
+
</ul>
|
501
|
+
|
502
|
+
<h4>Core</h4>
|
503
|
+
<ul>
|
504
|
+
<li>Experimental support is provided for running tests in a separate process.
|
505
|
+
Currently, this is only exposed in the Gui runner.
|
506
|
+
<li>NUnit recognizes a special attribute on
|
507
|
+
the config element of the nunit project file, <b>runtimeFramework</b>,
|
508
|
+
which may be set to "net-1.1" or "net-2.0." This causes use of the
|
509
|
+
appropriate runner if tests are run in a separate process.
|
510
|
+
<p><p>
|
511
|
+
<b>Note:</b> Both of the above features are experimental and
|
512
|
+
somewhat fragile. Results are expected to vary for different
|
513
|
+
installations and we ask that problems be reported.
|
514
|
+
</ul>
|
515
|
+
|
516
|
+
<h4>Gui</h4>
|
517
|
+
|
518
|
+
<ul>
|
519
|
+
<li>The Addin Dialog now shows an error message for any addin that
|
520
|
+
fails to load. (from 2.4.8)
|
521
|
+
<li>The TestLoader settings dialog provides an option for running tests
|
522
|
+
in a separate process.
|
523
|
+
<li>The Assembly Info display now shows two runtime versions for each
|
524
|
+
test assembly: the one for which it was built and the one under
|
525
|
+
which it is currently loaded.
|
526
|
+
</ul>
|
527
|
+
|
528
|
+
<h4>Extensibility</h4>
|
529
|
+
|
530
|
+
<ul>
|
531
|
+
<li>The <b>RequiredAddinAttribute</b> is now only permitted at the assembly level.
|
532
|
+
</ul>
|
533
|
+
|
534
|
+
<h4>Bug Fixes</h4>
|
535
|
+
|
536
|
+
<ul>
|
537
|
+
<li>The Gui output panes were failing to use a fixed font. (from 2.4.8)
|
538
|
+
</ul>
|
539
|
+
|
540
|
+
<h3>NUnit 2.5 Alpha 3 Release - Version 2.5.0.8189 - July 7, 2008</h3>
|
541
|
+
|
542
|
+
<h4>General</h4>
|
543
|
+
|
544
|
+
<ul>
|
545
|
+
<li>NUnit now uses a new version numbering scheme. The first three
|
546
|
+
dot-separated values represent the release level, as before, while
|
547
|
+
the fourth is a build number tied to the date of the release. This
|
548
|
+
alpha release, for example, is numbered 2.5.0.8189.
|
549
|
+
<li>The NUnit source now includes a VS2008 project, in addition to
|
550
|
+
the existing VS2005 and VS2003 projects
|
551
|
+
</ul>
|
552
|
+
|
553
|
+
<h4>Framework</h4>
|
554
|
+
|
555
|
+
<ul>
|
556
|
+
<li><b>DataSourceAttribute</b> has been replaced with <b>FactoryAttribute</b>.
|
557
|
+
The new attribute may refer to any field, method or property that
|
558
|
+
provides test cases consistent with the signature of the method on which
|
559
|
+
it appears. The naming of this attribute is still a bit unsatisfactory
|
560
|
+
and it may change in the final release.
|
561
|
+
<li>The new <b>TestCaseFactoryAttribute</b> class may be used to mark a
|
562
|
+
field, method or property that provides test cases. It specifies the
|
563
|
+
argument types of the test cases that will be provided and is used
|
564
|
+
to identify the cases to be used when the name of a factory is not
|
565
|
+
specified.
|
566
|
+
<li>Data may be specified for individual arguments of a parameterized test
|
567
|
+
using the new attributes: <b>ValuesAttribute</b>, <b>RangeAttribute</b>
|
568
|
+
and <b>RandomAttribute</b>. By default, test cases are created using
|
569
|
+
every possible combination of the items provided. Attributes on the
|
570
|
+
test method may specify how data is combined. This release includes
|
571
|
+
<b>SequentialAttribute</b>, <b>CombinatorialAttribute</b> (the default) and
|
572
|
+
<b>PairwiseAttribute</b>. However, Pairwise combination is not yet
|
573
|
+
implemented, so that attribute is currently ignored.
|
574
|
+
<li><b>TestFixture</b> classes may now be generic. They must be marked with
|
575
|
+
or or more instances of <b>TextFixtureAttribute</b> using the new
|
576
|
+
constructor that takes an array of Types. NUnit will instantiate
|
577
|
+
the fixture multiple times, using the type arguments provided.
|
578
|
+
<li>Parameterized test methods may now be generic. NUnit will deduce
|
579
|
+
the correct implementation to use based on the types of the
|
580
|
+
parameters provided.
|
581
|
+
<li>The new <b>RequiredAddinAttribute</b> may be used to mark tests,
|
582
|
+
fixtures or assemblies, indicating the name of any addin that is
|
583
|
+
required to run the tests. If the addin is not present, the test,
|
584
|
+
fixture or assembly is marked NotRunnable.
|
585
|
+
<li>A new assertion and corresponding constraint <b>IsOrdered</b>
|
586
|
+
has been added. (contributed by Simone Busoli)
|
587
|
+
<li><b>PlatformAttribute</b> has been extended to accept the new keywords
|
588
|
+
<b>NT6</b>, <b>Vista</b> and <b>Win2008Server</b>.
|
589
|
+
<br><br>
|
590
|
+
<b>Note:</b> In the current alpha release, NUnit is unable to
|
591
|
+
distintuish between Vista and Windows 2008 Server. Either
|
592
|
+
of them will match all the above values.
|
593
|
+
</ul>
|
594
|
+
|
595
|
+
<h4>Gui</h4>
|
596
|
+
|
597
|
+
<ul>
|
598
|
+
<li>Properties with a collection for a value are now displayed
|
599
|
+
displayed as a comma-separated list in the properties window.
|
600
|
+
</ul>
|
601
|
+
|
602
|
+
<h4>Extensibility</h4>
|
603
|
+
|
604
|
+
<ul>
|
605
|
+
<li>The <b>IParameterProvider</b> interface has been replaced with
|
606
|
+
<b>ITestCaseProvider</b>. The ParameterProviders extension point
|
607
|
+
has been renamed to TestCaseProviders.
|
608
|
+
<li>A new extension point, <b>DataPointProviders</b>, has been
|
609
|
+
added to support extensions that provide data for individual
|
610
|
+
test parameters. Extensions must implement the <b>IDataPointProvider</b>
|
611
|
+
interface.
|
612
|
+
<li>A simpler method of providing new data point extensions based
|
613
|
+
on attributes applied to the parameter itself is also available.
|
614
|
+
Such attributes may be derived from <b>ValuesAttribute</b> and
|
615
|
+
do not require any special addin in order to work.
|
616
|
+
</ul>
|
617
|
+
|
618
|
+
<h4>Bug Fixes</h4>
|
619
|
+
|
620
|
+
<ul>
|
621
|
+
<li>NUnit tests of AssertThrows were not working on systems using
|
622
|
+
non-English cultures.
|
623
|
+
<li>Domains were not unloading correctly in some circumstances. Unloading
|
624
|
+
is now done on a separate thread.
|
625
|
+
<li>An NUnitSettings.xml file of zero length was causing a crash. (from 2.4.8)
|
626
|
+
<li>Invoking the gui with /exclude:XXX, where XXX is a non-existent
|
627
|
+
category, was causing all tests to be excluded. (from 2.4.8)
|
628
|
+
<li>Categories were not working properly on repeated tests. (from 2.4.8)
|
629
|
+
<li>A serious memory leak was fixed in the NUnit test runners. (from 2.4.8)
|
630
|
+
<li>Static SetUp and TearDown methods were not being called in a SetUpFixture.
|
631
|
+
<li>The current directory used when executing addins that load tests was
|
632
|
+
not correctly set.
|
633
|
+
</ul>
|
634
|
+
|
635
|
+
<h3>NUnit 2.5 Alpha 2 Release - May 7, 2008</h3>
|
636
|
+
|
637
|
+
<p><b>Note:</b> Since this is an alpha level release, the
|
638
|
+
features are not complete and some features present in
|
639
|
+
this release may be removed or changed in future releases.
|
640
|
+
|
641
|
+
<h4>General</h4>
|
642
|
+
|
643
|
+
<ul>
|
644
|
+
<li>This release includes pNUnit, an extended NUnit runner for distributed
|
645
|
+
parallel tests. The pNUnit program was developed at Codice Software
|
646
|
+
for use in testing the Plastic SCM and has been contributed to NUnit.
|
647
|
+
For more info about using pNUnit see the
|
648
|
+
<a href="http://www.codicesoftware.com/opdownloads2/oppnunit.aspx">pNUnit site</a>.
|
649
|
+
<li>The install now offers Typical, Complete and Custom options. Selecting
|
650
|
+
Typical gets you the NUnit framework, core, console runner and Gui.
|
651
|
+
To install pNUnit, any of the bundled addins or the NUnit tests,
|
652
|
+
select Complete or Custom.
|
653
|
+
</ul>
|
654
|
+
|
655
|
+
<h4>Extensibility</h4>
|
656
|
+
|
657
|
+
<ul>
|
658
|
+
<li>The RowTestExtension, which was merged into the nunit extension dlls
|
659
|
+
in Alpha-1, is now provided as a separate addin. This is the general
|
660
|
+
approach we plan to take with regard to any bundled addins, since it
|
661
|
+
permits the creator of an addin to provide updates separately from
|
662
|
+
the NUnit release.
|
663
|
+
<li>This release includes the CSUnitAddin extension, which allows the running of
|
664
|
+
CSUnit tests under NUnit. The csunit.dll must be available in order to
|
665
|
+
run the tests.
|
666
|
+
</ul>
|
667
|
+
|
668
|
+
<h3>NUnit 2.5 Alpha 1 Release - April 18, 2008</h3>
|
669
|
+
|
670
|
+
<h4>General</h4>
|
671
|
+
|
672
|
+
<ul>
|
673
|
+
<li>There are no longer separate distributed packages for .NET 1.1 an 2.0.
|
674
|
+
Both the binary zip and msi packages contain subdirectories for .NET
|
675
|
+
1.1 and 2.0. In the case of the msi, the user may elect to install either
|
676
|
+
or both of them.
|
677
|
+
<li>The Visual Studio solutions and projects are now in a directory tree that
|
678
|
+
is parallel to the source tree. This eliminates problems where the VS2003
|
679
|
+
and VS2005 builds were interfering with one another and makes room for
|
680
|
+
adding VS2008.
|
681
|
+
<li>NUnit is now built using NAnt 0.86 beta 1
|
682
|
+
<li>The windows installer is now created using WiX 2.0.5085
|
683
|
+
</ul>
|
684
|
+
|
685
|
+
<h4>Framework</h4>
|
686
|
+
|
687
|
+
<ul>
|
688
|
+
<li>Two new attributes have been added to support passing arguments
|
689
|
+
to test methods:
|
690
|
+
<ul>
|
691
|
+
<li><b>TestCaseAttribute</b> allows the programmer to
|
692
|
+
specify the arguments and a number of optional parameters inline.
|
693
|
+
<li><b>DataSourceAttribute</b> identifies a static property that
|
694
|
+
will provide the arguments and other parameters.
|
695
|
+
</ul>
|
696
|
+
|
697
|
+
<li>Two new constraints have been added to permit testing of
|
698
|
+
application-created paths, without requiring that they exist in
|
699
|
+
the file system. The following syntax is supported:
|
700
|
+
<ul>
|
701
|
+
<li><b>Is.SamePath(string)</b>
|
702
|
+
<li><b>Is.SamePathOrUnder(string)</b>
|
703
|
+
</ul>
|
704
|
+
|
705
|
+
<li>The DirectoryAssert class has been added, providing the following Methods:
|
706
|
+
<ul>
|
707
|
+
<li><b>AreEqual(DirectoryInfo, DirectoryInfo)</b>
|
708
|
+
<li><b>AreEqual(string, string)</b>
|
709
|
+
<li><b>AreNotEqual(DirectoryInfo, DirectoryInfo)</b>
|
710
|
+
<li><b>AreNotEqual(string, string)</b>
|
711
|
+
<li><b>IsEmpty(DirectoryInfo, DirectoryInfo)</b>
|
712
|
+
<li><b>IsEmpty(string, string)</b>
|
713
|
+
<li><b>IsNotEmpty(DirectoryInfo, DirectoryInfo)</b>
|
714
|
+
<li><b>IsNotEmpty(string, string)</b>
|
715
|
+
<li><b>IsWithin(DirectoryInfo, DirectoryInfo)</b>
|
716
|
+
<li><b>IsWithin(string, string)</b>
|
717
|
+
<li><b>IsNotWithin(DirectoryInfo, DirectoryInfo)</b>
|
718
|
+
<li><b>IsNotWithin(string, string)</b>
|
719
|
+
</ul>
|
720
|
+
|
721
|
+
<li>The method <b>Assert.Throws(Type expectedException, TestSnippet code)</b>
|
722
|
+
has been added to provide more control over tests of expected exceptions.
|
723
|
+
<b>TestSnippet</b> is a delegate, which may of course be supplied
|
724
|
+
anonymously under .NET 2.0. If the correct exception type is thrown,
|
725
|
+
the actual exception is returned from the method, allowing further
|
726
|
+
verification to be performed.
|
727
|
+
|
728
|
+
<li>The <b>Assert.DoesNotThrow</b> method may be used to verify that a
|
729
|
+
delegate does not throw an exception.
|
730
|
+
|
731
|
+
<li>The <b>Assert.Pass</b> method allows early termination of a test with a
|
732
|
+
successful result.
|
733
|
+
|
734
|
+
<li>The <b>Assert.Inconclusive</b> method allows returning
|
735
|
+
the new Inconclusive result state.
|
736
|
+
|
737
|
+
<li>NUnit now includes added funtionality in the .NET 2.0 build of
|
738
|
+
the framework. The following additional features are supported:
|
739
|
+
<ul>
|
740
|
+
<li>All Asserts and Constraints work with nullable types.
|
741
|
+
<li>Some Asserts allow an alternate generic syntax for convenience:
|
742
|
+
<ul>
|
743
|
+
<li><b>Assert.IsInstanceOf<T>(object actual);</b>
|
744
|
+
<li><b>Assert.IsNotInstanceOf<T>(object actual);</b>
|
745
|
+
<li><b>Assert.IsAssignableFrom<T>(object actual);</b>
|
746
|
+
<li><b>Assert.IsNotAssignableFrom<T>(object actual);</b>
|
747
|
+
<li><b>Assert.Throws<T>(TypeSnippet code);</b>
|
748
|
+
</ul>
|
749
|
+
</ul>
|
750
|
+
|
751
|
+
<li>The following obsolete interfaces, classes and methods have been removed:
|
752
|
+
<ul>
|
753
|
+
<li>The <b>IAsserter</b> interface
|
754
|
+
<li>The <b>AbstractAsserter</b> class
|
755
|
+
<li>The <b>Assertion</b> class
|
756
|
+
<li>The <b>AssertionFailureMessage</b> class
|
757
|
+
<li>The old <b>NUnit.Framework.TestCase</b> class used for inheriting test classes
|
758
|
+
<li>The <b>Assert.DoAssert()</b> method
|
759
|
+
<li>Two <b>ExpectedExceptionAttribute(Type, string)</b> constructor
|
760
|
+
<li>Two <b>ExpectedExceptionAttribute(string, string)</b> constructor
|
761
|
+
</ul>
|
762
|
+
|
763
|
+
<li>The syntactic constructs in the <b>SyntaxHelpers</b> namespace have been
|
764
|
+
moved to the <b>NUnit.Framework.Syntax.CSharp</b> namespace. The old
|
765
|
+
namespace may still be used for existing classes, but will not be
|
766
|
+
supported after the 2.5 release.
|
767
|
+
|
768
|
+
</ul>
|
769
|
+
|
770
|
+
<h4>Core</h4>
|
771
|
+
|
772
|
+
<ul>
|
773
|
+
<li>NUnit now allows use of static methods as tests and for SetUp, TearDown,
|
774
|
+
TestFixtureSetUp and TestFixtureTearDown.
|
775
|
+
<li>Failures and Errors are now distinquished internally and in summary reports.
|
776
|
+
Methods that are not run because they are invalid are also reported separately.
|
777
|
+
</ul>
|
778
|
+
|
779
|
+
<h4>Console</h4>
|
780
|
+
|
781
|
+
<ul>
|
782
|
+
<li>The summary report now displays Errors, Failures, Inconclusive, Ignored and Skipped tests
|
783
|
+
separately. More detailed information on non-runnable tests and setup failures
|
784
|
+
is provided.
|
785
|
+
<li>The console summary report is no longer created using a stylesheet, which
|
786
|
+
renders the <b>/transform</b> option meaningless. The option has been removed.
|
787
|
+
</ul>
|
788
|
+
|
789
|
+
<h4>Gui</h4>
|
790
|
+
|
791
|
+
<ul>
|
792
|
+
<li>The default gui display now uses a single tab for all text output. For
|
793
|
+
users upgrading from an earlier release, the current settings are
|
794
|
+
honored. If you wish to change to the new default, use the Restore Defaults
|
795
|
+
button on the Text Output settings dialog.
|
796
|
+
|
797
|
+
<li>The final test run display shows a more detailed summary: passed tests,
|
798
|
+
errors, failures, inconclusive, non-runnable, skipped and ignored.
|
799
|
+
|
800
|
+
<li>The status bar now displays errors and failures separately in.
|
801
|
+
|
802
|
+
<li>The tree display shows non-runnable tests in red and inconclusive tests
|
803
|
+
in orange. Inconclusive tests are temporarily listed
|
804
|
+
on the Tests Not Run tab for this alpha release.
|
805
|
+
</ul>
|
806
|
+
|
807
|
+
<h4>Extensibility</h4>
|
808
|
+
|
809
|
+
<ul>
|
810
|
+
<li>A new extension point <b>ParameterProviders</b> allows addins to
|
811
|
+
provide data for parameterized tests.
|
812
|
+
|
813
|
+
<li>The following extensions are included in the nunit.core.extensions
|
814
|
+
and nunit.framework.extensions assemblies:
|
815
|
+
<ul>
|
816
|
+
<li>The MaxTime extension, which was previously a sample.
|
817
|
+
<li>The RowTest extension, which remains an alternative to NUnit's
|
818
|
+
native TestCase syntax.
|
819
|
+
<li>The XmlConstraint extension, which allows comparing two xml files
|
820
|
+
</ul>
|
821
|
+
</ul>
|
822
|
+
|
823
|
+
|
824
|
+
</div>
|
825
|
+
|
826
|
+
<!-- Submenu -->
|
827
|
+
<div id="subnav">
|
828
|
+
<ul>
|
829
|
+
<li><a href="index.html">NUnit 2.5</a></li>
|
830
|
+
<ul>
|
831
|
+
<li><a href="getStarted.html">Getting Started</a></li>
|
832
|
+
<li><a href="assertions.html">Assertions</a></li>
|
833
|
+
<li><a href="constraintModel.html">Constraints</a></li>
|
834
|
+
<li><a href="attributes.html">Attributes</a></li>
|
835
|
+
<li><a href="nunit-console.html">Console Runner</a></li>
|
836
|
+
<li><a href="nunit-gui.html">Gui Runner</a></li>
|
837
|
+
<li><a href="configFiles.html">Configuration Files</a></li>
|
838
|
+
<li><a href="pnunit.html">PNUnit</a></li>
|
839
|
+
<li><a href="multiAssembly.html">Multiple Assemblies</a></li>
|
840
|
+
<li><a href="vsSupport.html">Visual Studio Support</a></li>
|
841
|
+
<li><a href="extensibility.html">Extensibility</a></li>
|
842
|
+
<li><a href="releaseNotes.html">Release Notes</a></li>
|
843
|
+
<ul>
|
844
|
+
<li id="current"><a href="releaseDetail.html">Pre-Release Details</a></li>
|
845
|
+
</ul>
|
846
|
+
<li><a href="samples.html">Samples</a></li>
|
847
|
+
<li><a href="license.html">License</a></li>
|
848
|
+
</ul>
|
849
|
+
</ul>
|
850
|
+
</div>
|
851
|
+
<!-- End of Submenu -->
|
852
|
+
|
853
|
+
|
854
|
+
<!-- Standard Footer for NUnit.org -->
|
855
|
+
<div id="footer">
|
856
|
+
Copyright © 2009 Charlie Poole. All Rights Reserved.
|
857
|
+
</div>
|
858
|
+
<!-- End of Footer -->
|
859
|
+
|
860
|
+
</body>
|
861
|
+
</html>
|