代码之家  ›  专栏  ›  技术社区  ›  Loading

是否有方法将值从一个单元测试发送到另一个单元测试?

  •  1
  • Loading  · 技术社区  · 6 年前

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

    有时我需要“刷新”数据库,所以所有的单元测试都指向错误的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
        }
    }
    

    ps:如果您知道一个可以做到这一点的框架,那么切换测试框架是没有问题的

    1 回复  |  直到 6 年前
        1
  •  2
  •   Kajetan Kazimierczak    6 年前

    测试应该是独立的,并且通常不应该在测试之间传递值。

    如果所有的测试都在同一个类中,那么您可以在您的类中使用一个变量来保存id和一些全局设置函数来设置所有内容并将变量设置为正确的id。

    [TestFixture]
    public class MyTests 
    {
    private int _testId;
    
    [OneTimeSetUp]
    public void SetItUp()
    {
    ...
    _testId = whatever;
    }
    [Test]
    public void TestOne()
    {
    var whatever = _testId;
    ...
    }
    }