如何从单元测试返回值?

问题描述 投票:0回答:1

我有以下问题。我的过程分3个步骤:

Step 1 -> Step 2 ->Step 3

我希望能够测试所有组合。

Step1
Step1+Step2  
Step2
Step2+Step3
Step1+Step2+Step3

为了做到这一点,我希望能够从我的每个Unit Tests中返回一些东西。我不想每次都创建全局变量并对其进行突变。

class TestPipeline
{
[Testcase]
public Int Step1()
{
   ////do something
   Int outputStep1=doSomeStuff();
   return outputStep1;
}

[Testcase]
public Int Step2()
{
   Int inputStep1=Step1();
   Int outputStep2=doSomething(inputStep1);
   return outputStep2;
}
[Testcase]
public void Step3()
{
   Int inputStep2=Step2();
   Int result=doSomethingElse(inputStep2);
}
}

如何完成?

return nunit pipeline testcase
1个回答
0
投票

在我看来,您需要可以重用的辅助方法,在大多数情况下,只需要提取这些方法即可。

为了使组合正确无误,我只是对组合进行硬编码。看来您的步骤是连续的,所以不会进行像Step2 + Step3这样的测试,因为它实际上是Step1 + Step2 + Step3。

测试通常是数据驱动的,并且在测试中具有逻辑以根据诸如Combinatorial之类的数据来改变行为,这会在测试中添加不需要的逻辑。

class TestPipeline
{
    private int doSomeStuff()
    {
        return someStuff;
    }

    private int doSomething(int someStuff)
    {
        return something;
    }

    private int doSomethingElse(int something)
    {
        return somethingElse;
    }       

    [Testcase]
    public void Step1()
    {
       ////do something
       int outputStep1 = doSomeStuff();
       return outputStep1;
    }

    [Testcase]
    public void Step1Step2()
    {
       int inputStep1 = doSomeStuff();
       int outputStep2 = doSomething(inputStep1);
       return outputStep2;
    }

    [Testcase]
    public void Step1Step2Step3()
    {
       int inputStep1 = doSomeStuff();
       int outputStep2 = doSomething(inputStep1);
       int result = doSomethingElse(inputStep2);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.