myślę, że chodzi o to, aby uniknąć powielania kodu. Spróbuj wyodrębnić klasę bazową z nadpisaną metodą używaną w SetUp(). wszystkie pochodzą klasa wykonać testy z klasy bazowej z przedmiotów przygotowanych overriten OnSetUp()
[TestFixture]
public class BaseTestsClass
{
//some public/protected fields to be set in SetUp and OnSetUp
[SetUp]
public void SetUp()
{
//basic SetUp method
OnSetUp();
}
public virtual void OnSetUp()
{
}
[Test]
public void SomeTestCase()
{
//...
}
[Test]
public void SomeOtherTestCase()
{
//...
}
}
[TestFixture]
public class TestClassWithSpecificSetUp : BaseTestsClass
{
public virtual void OnSetUp()
{
//setup some fields
}
}
[TestFixture]
public class OtherTestClassWithSpecificSetUp : BaseTestsClass
{
public virtual void OnSetUp()
{
//setup some fields
}
}
Użycie sparametryzowane TestFixture mogą również być przydatne. Testy w klasie będą przeprowadzane zgodnie z metodą TestFixture, SetUp. Należy jednak pamiętać, że
Parametryzowane urządzenia są (jak odkryli) ograniczona przez fakt, że można używać tylko argumenty, które są dopuszczalne w atrybutach
Zastosowanie:
[TestFixture("some param", 123)]
[TestFixture("another param", 456)]
public class SomeTestsClass
{
private readonly string _firstParam;
private readonly int _secondParam;
public WhenNoFunctionCodeExpected(string firstParam, int secondParam)
{
_firstParam = firstParam;
_secondParam = secondParam;
}
[Test]
public void SomeTestCase()
{
...
}
}
Jak daleko jak wiem, nie możesz używać argumentów w swojej metodzie "[Setup]". Być może jednak możesz skorzystać z * NUnit * [atrybutów akcji] (http://nunit.com/index.php?p=actionAttributes&r=2.6.2)? –
NUnit test run nie przekazuje argumentów do metody "SetUp". Po co to masz? –