Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法将一个值从一个单元测试发送到另一个单元测试?_C#_Nunit - Fatal编程技术网

C# 有没有办法将一个值从一个单元测试发送到另一个单元测试?

C# 有没有办法将一个值从一个单元测试发送到另一个单元测试?,c#,nunit,C#,Nunit,我有一个函数,它计算一些东西并将其输入数据库。此设置对于所有单元测试都很重要,因为它们需要一些数据来处理 有时我需要“刷新”数据库,所以所有的单元测试都指向错误的ID 通常我只是先运行设置,然后更改所有单元测试,但这需要很长时间有没有办法实现自动化? 我想将生成的ID传递到其他单元测试中 所以这个想法是这样的: [SetupFixture] public class{ [Test] public void SetupDB(){ setup();

我有一个函数,它计算一些东西并将其输入数据库。此设置对于所有单元测试都很重要,因为它们需要一些数据来处理

有时我需要“刷新”数据库,所以所有的单元测试都指向错误的ID

通常我只是先运行设置,然后更改所有单元测试,但这需要很长时间有没有办法实现自动化?

我想将生成的ID传递到其他单元测试中

所以这个想法是这样的:

[SetupFixture]
public class{
    [Test]
    public void SetupDB(){
        setup();

        //now marking the result somehow so other tests can pick the result up
        return ID; //<--
    }
}

public class OtherTests{
    [Test]
    [Get_ID_From_SetupDB]
    public void testBaseOnID(int ID){
        //we do stuff now with ID
    }
}
[SetupFixture]
公共课{
[测试]
public void SetupDB(){
设置();
//现在以某种方式标记结果,以便其他测试能够获取结果

返回ID;//测试应该是独立的,并且您通常不应该在测试之间传递值

在您的情况下,如果所有测试都在同一个类中,您可以做的是在您的类中有一个变量来保存id和一些全局设置函数,该函数设置所有内容并将变量设置为正确的id。在NUnit中有[OneTimeSetUp]属性

[TestFixture]
public class MyTests 
{
private int _testId;

[OneTimeSetUp]
public void SetItUp()
{
...
_testId = whatever;
}
[Test]
public void TestOne()
{
var whatever = _testId;
...
}
}

让一个测试依赖于另一个测试是个坏主意。我建议为每个测试准备和刷新数据。测试框架通常对此有一个选项。例如,Nunit有[SetUp]和[TearDown]属性:如果所有测试都需要一些公共数据,请在测试之前准备这些数据。这通常由
SetupAttribute
或类似的方法完成。问题是setup()编译大约需要10分钟。我需要测试安装程序是否正常工作,并且需要在DB上测试一些基本函数。“问题是setup()编译大约需要10分钟"Eeehm,什么?我怀疑编译需要10个MNUTE,因为编译器没有编译一个又一个的成员,因此无法确定哪个成员需要花费多少时间。无论如何,你应该问为什么设置会花费那么多时间,而不是试图用不适当的解决方案来回避问题,使其成为一个.Put将您的逻辑转换为另一种方法不会降低其复杂性。@rmrfhome请不要将人员发送到遗留文档,除非他们说他们需要这些文档!当前的NUnit文档位于