有没有办法为这样的nunit设置方法添加参数:public void SetUp(Point p = null) { /*code*/ }
。
我尝试了它并获得了以下异常SetUp : System.Reflection.TargetParameterCountException : Parameter count mismatch
答案 0 :(得分:1)
我认为您的观点是避免代码重复。 尝试使用SetUp()中使用的overriten方法提取基类。 所有派生类都将从基类执行测试,其中的对象是在OverritUp()
中编写的[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
}
}
使用参数化的TestFixture也很有用。课堂上的测试将按照TestFixture,SetUp方法进行。 但请记住
参数化装置(正如您所发现的那样)受限于您只能使用属性中允许的参数
用法:
[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()
{
...
}
}