Ant*_*ean 65 .net constructor unit-testing
这个问题涉及使用MSTest在Visual Studio中进行单元测试(这很重要,因为MSTest的执行顺序).标记为[TestInitialize]的方法和测试类构造函数都将在每个测试方法之前运行.
所以,问题是,你在这些领域中倾向于做什么?你是否避免在两者中进行某些活动?你的理由是什么:风格,技术,迷信?
Ant*_*ean 52
构造函数只是该语言提供的结构.每个测试框架似乎都有自己的受控生命周期"初始化".您可能只会使用构造函数来改变您的本地人.
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() { }
}
Run Code Online (Sandbox Code Playgroud)
MSpec:你只有一次Establish,并Because为所有的断言(It).所以,不要在断言中改变你的本地人.并且不依赖于基本上下文中的本地变异(如果使用它们).
[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;
}
Run Code Online (Sandbox Code Playgroud)
T. *_*ter 18
以下是我在TestInitialize中发现的一些优点.
小智 15
使用TestInitialize()或ClassInitialize()而不是测试类实例或静态构造函数的主要优点是它的显式特性.它清楚地表明您在测试之前正在进行一些设置.持续这样做应该从长远来看提高可维护性.
我说除非你需要,否则使用构造函数TestContext。
readonly这是测试初始化中的一件大事,您想要为测试准备不应该更改的内容(理想情况下您准备的内容也是不可变的)。| 归档时间: |
|
| 查看次数: |
42966 次 |
| 最近记录: |