假设我有充分的理由想要进行下面的测试,我怎么能设置批准测试来命名.approved文件UnitTest1.Test1.approved
而不是BaseTest.Test1.approved
?感谢
public abstract class BaseTest
{
[TestMethod]
public void Test1()
{
Approvals.Verify(1);
}
[TestMethod]
public void Test2()
{
Approvals.Verify(2);
}
}
[TestClass]
public class UnitTest1 : BaseTest
{
public UnitTest1()
{
// some initialization
}
}
[TestClass]
public class UnitTest2 : BaseTest
{
public UnitTest2()
{
// some initialization
}
}
=== UPDATE ===
根据Llewellyn的建议,我将以下代码添加到基类的ctor中:
public BaseTest()
{
NamerFactory.AdditionalInformation = GetType().Name;
}
按预期工作,我为每个测试获得单独的.approved文件。
答案 0 :(得分:2)
这是一个有趣的假设。我假设你想要两个 UnitTest1.Test1.approved& UnitTest2.Test1.approved
简短的回答并不完全正确,但有一些解决方法。
您可以将测试重写为
[TestMethod]
public void Test2()
{
NamerFactory.AdditionalInformation = this.GetType().Name;
Approvals.Verify(2);
}
btw:如果你使用myget https://www.myget.org/gallery/approvaltests
中的每晚版本,那么使用using语句会更好using (NamerFactory.AsEnvironmentSpecificTest(() => this.GetType().Name))
{
Approvals.Verify(1);
}
您可以提取大部分方法,然后从外部测试中调用它。您很可能想要一个方法的所有功能,但仍希望测试在扩展类中。 Approvals调用不需要在最顶层的测试方法中。例如:
public abstract class BaseTest
{
public void Verify1()
{
// other code to do stuff
Approvals.Verify(1);
}
}
[TestClass]
public class UnitTest1 : BaseTest
{
public UnitTest1()
{
// some initialization
}
[TestMethod]
public void Test1()
{
Verify1();
}
}