gpt4 book ai didi

.net - 您是否使用 TestInitialize 或测试类构造函数来准备每个测试?为什么?

转载 作者:行者123 更新时间:2023-12-02 07:59:41 25 4
gpt4 key购买 nike

这个问题涉及使用 MSTest 在 Visual Studio 中进行单元测试(这很重要,因为 MSTest 的 execution order )。标记为 [TestInitialize] 的方法和测试类构造函数都将在每个测试方法之前运行。

所以,问题是,您在这些领域中倾向于做什么?您是否避免在其中进行某些事件?你的理由是什么:风格、技术、迷信?

最佳答案

构造函数只是语言提供的结构。每个测试框架似乎都有自己的受控生命周期“初始化”。您可能只会在使用构造函数来改变局部变量时遇到麻烦。

MSTest:对于每个TestMethod,您都会获得测试类的全新实例。这可能是唯一可以在构造函数、初始化程序或测试方法中改变局部变量而不影响其他测试方法的情况。

public class TestsForWhatever
{
public TestsForWhatever()
{
// You get one of these per test method, yay!
}

[TestInitialize]
public void Initialize()
{
// and one of these too!
}

[TestMethod]
public void AssertItDoesSomething() { }

[TestMethod]
public void AssertItDoesSomethingElse() { }
}

MSpec: 对于所有断言 (It),您只能得到一个 EstablishBecause。所以,不要在你的断言中改变你的本地人。并且不要依赖于基本上下文中本地变量的突变(如果您使用它们)。

[Subject(typeof(Whatever))]
public class When_doing_whatever
{
Establish context = () =>
{
// one of these for all your Its
};

Because of = () => _subject.DoWhatever();

It should_do_something;
It should_do_something_else;
}

关于.net - 您是否使用 TestInitialize 或测试类构造函数来准备每个测试?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/334515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com