我有一些测试代码似乎用完了正确的顺序。测试订单Microsoft.VisualStudio.TestTools.UnitTesting问题?
[TestClass]
public class DirTest {
public DirTest() {
Assert.AreEqual(Directory.Exists("testpath"), true);
}
[TestMethod]
public void TestMethod1() {
}
[ClassInitialize]
public static void InitTest(TestContext context) {
Directory.CreateDirectory("testpath");
}
}
它抛出该目录不存在,类构造函数被调用或者是有什么我需要做的是缺少前不应ClassInitialize运行错误。如果情况并非如此,除了AssemblyInitialize之外,还有一个测试用例可以包含在构造类之前调用的测试中吗?
- 编辑 真正的问题在这里,顶部是一个简化。
//RealClass.cs
public class RealClass{
public RealClass(string path){
this._path = path;
this._InitDirectory();
}
protected string _path;
protected void _InitDirectory(){
//Something that requires read from path
File.WriteAllText(this._path + "/realData.data", "some real data that needs to be created by the class");
}
}
//DirTest.cs
[TestClass]
public class DirTest : RealClass {
public DirTest() : base("testpath") {}
[TestMethod]
public void TestMethod1() {
}
[ClassInitialize]
public static void InitTest(TestContext context) {
Directory.CreateDirectory("testpath");
}
}
单元测试将失败,因为其中需要的路径“ClassInitialize”方法之前将死的目录被调用来创建所需的模拟目录。
- 编辑
我想出了一个变通对于这一点,但我仍想知道是否有另一种方式来达到预期的效果而无需添加更多的类,并且不移除的功能考试。我为刚刚包含该静态方法的类设置了一个“AssemblyInitialize”,并告诉该方法为“ClassInitialize”激发静态方法。它当然会在任何构造函数之前触发。虽然问题的根源仍然没有解决,因为它不是自包含的,而是依赖于类函数来调用类设置。
你真的有相对路径还是只显示它的样本? (事实上,创建文件夹对于单元测试来说不是个好主意,但它不是这个问题的一部分)。 –
构造函数总是首先执行。 –
这个想法是以一种简单的方式显示,如果我要在构造类之前测试具有需要某些东西的继承的类,它将无法创建该类。如果你的课堂需要文件夹进行测试,那么不是测试创建和销毁它们以进行测试并不是一个坏主意,你还有什么能够分享你的测试?我明白,当一个类正在创建构造函数总是被称为第一,但这是一个静态方法。如果这个想法要求建造这个班,为什么会是静态的? – Stev0