【问题标题】:MSTest - Integration tests - use value of another testMSTest - 集成测试 - 使用另一个测试的价值
【发布时间】:2022-08-12 03:33:47
【问题描述】:

我知道单元测试应该独立运行,并且永远不应该依赖于其他单元测试。
不过,我也写了一些集成测试使用 MSTest,有时它们会产生我想在另一个测试中重用的结果。

例如:

  1. 创建用户
  2. 从数据库中搜索此用户
  3. 删除用户

    这些点中的每一个对我来说都是一个集成测试,所以我想编写如下所示的方法:

        User _myNewUser;
        [TestMethod]
        public void CreateAUserTest() 
        {
            //User gets created here somehow....
            _myNewUser = successfullyCreatedUser;
        }
    

    这个测试应该在前面的测试之后运行:

        User _myNewUser;
        [TestMethod]
        public void SearchingUserTest() 
        {
            var user = searchUser(_newUser.GetName());
            //Assert that user is not null
        }
    

    你可以看到我在第二个测试中使用了第一个测试的值。
    通过播放列表,我可以确保两个测试都以正确的顺序运行。

    但是,在 VS 2022 中,每个测试都是单独执行的,所以我想做的事情不起作用。
    如果我运行第二个测试,_newUser 始终为 null,即使第一个测试成功。

    1. 总的来说,我的想法很糟糕吗?
    2. 如果不是:如何在另一个测试中使用测试生成的数据?

    标签: integration-testing mstest visual-studio-2022


    【解决方案1】:

    我通常将这样的测试内容提取到一个单独的暂存函数中,该函数不包含 [TestMethod] 属性。例如,将 CreateAUserTest() 的内容提取到其他内容中,例如 Stage_CreateAUser() 或任何名称。然后在 CreateAUserTest() 中,调用 Stage_CreateAUser()。

    在 SearchingUserTest() 中,您可以将这些内容提取到 Stage_SearchingUser() 中,在此函数中您可以调用 Stage_CreateAUser() 和 Stage_SearchingUser()。

    ETC...

    【讨论】:

      猜你喜欢
      • 2011-12-25
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      相关资源
      最近更新 更多