2013-02-22 17 views
8

Czy istnieje sposób dodania argumentów do metody instalacji nunit jak na przykład: public void SetUp(Point p = null) { /*code*/ }.Czy istnieje sposób, aby utworzyć konfigurację nunit z argumentami?

Próbowałem go i mam następujący wyjątek SetUp : System.Reflection.TargetParameterCountException : Parameter count mismatch

+1

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)? –

+0

NUnit test run nie przekazuje argumentów do metody "SetUp". Po co to masz? –

Odpowiedz

1

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() 
    { 
     ... 
    } 
} 
Powiązane problemy