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