维护VS Test Project中单元测试方法之间的上下文

Tra*_*Guy 8 c# automated-tests unit-testing mstest visual-studio

我想按顺序运行以下单元测试:

  1. 使用随机数创建新客户名称,密码等.
  2. 检索刚刚创建的客户并断言其属性包含相同的随机数
  3. 在同一用户上调用ForgotPassword函数,使用相同的用户名随机数

如清楚所示,我需要生成一次随机数,并在3种测试方法中共享它.
我似乎找不到办法做到这一点.

  • 我想过使用TestContext对象,但是为每个实例创建了它.
  • 我尝试使用ClassInitialize()方法没有帮助,因为它是静态的,因此其他方法无法访问该数字.

知道如何实现我的目标吗?

RP *_*yer 10

您可以将共享数据放入静态变量吗?

像这样简单:

    private static string testValue = "something";

    [TestMethod]
    public void TestMethod1()
    {
        Assert.AreEqual(testValue, "something");
        testValue = "something2";
    }

    [TestMethod]
    public void TestMethod2()
    {
        Assert.AreEqual(testValue, "something2");
        testValue = "something3";
    }

    [TestMethod]
    public void TestMethod3()
    {
        Assert.AreEqual(testValue, "something3");
    }
Run Code Online (Sandbox Code Playgroud)

更新:总结一下这个问题的其他评论,我认为每个人都完全同意在单元测试之间保持状态是一个坏主意.如果有必要,我的回答只是一种方法.正如我在另一篇评论中所提到的,我过去必须这样做,但不是单元测试.在集成/回归测试之间保持状态有时是有益/必要的,您不一定要模拟对象或隔离应用程序的某些部分.作为软件测试人员,您并不总是具有影响/能力/权限,可以立即重构或重新架构应用程序,使其成为此测试的最佳选择.