我有以下问题。我的过程分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);
}
}
如何完成?
在我看来,您需要可以重用的辅助方法,在大多数情况下,只需要提取这些方法即可。
为了使组合正确无误,我只是对组合进行硬编码。看来您的步骤是连续的,所以不会进行像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);
}
}