如何对此自定义命令行开关进行单元测试

时间:2013-07-17 22:12:11

标签: c# unit-testing c#-4.0 testing powershell

如果没有提供任何参数,我无法弄清楚如果这个命令行会失败,如何进行单元测试。

[Cmdlet(VerbsCommon.Move, "SomeResource")]
public class MoveSomeResource : Cmdlet
{
private int _id;

[Parameter(Position = 0, Mandatory = true)]
[ValidateNotNullOrEmpty]
public int ID 
{
    get { return _id; }
    set { _id = value; }
}

protected override void ProcessRecord()
{

    string text = string.Format("Move Resource {0} ", this._id);
    //Do something
    if (ShouldProcess(text, action))
    {
        //Do processing
    }
}
}

我尝试了以下方法但是,它没有因为ValidateNotNullOrEmpty错误而失败,而是执行// Do Processing中的部分并在那里失败。

[TestMethod]
public void TestMoveBluh()
{
MoveSomeResource cmd = new MoveSomeResource();
IEnumerator result = cmd.Invoke().GetEnumerator();
try
{
    result.MoveNext();
}
catch (Exception e)
{
    Assert.IsInstanceOfType(e, typeof(ArgumentException));
}
}

1 个答案:

答案 0 :(得分:-1)

好的,我想我看到了这个问题。你的参数是一个int,int不是null,它们永远不会是空的。我建议验证参数的值不为零,或者使它成为一个int?或可以为空的