C# 将抽象基本测试类与批准测试一起使用
假设我有很好的理由想做下面的测试,我如何设置批准测试来命名.approved文件C# 将抽象基本测试类与批准测试一起使用,c#,unit-testing,approval-tests,C#,Unit Testing,Approval Tests,假设我有很好的理由想做下面的测试,我如何设置批准测试来命名.approved文件UnitTest1.Test1.approved,而不是BaseTest.Test1.approved?谢谢 public abstract class BaseTest { [TestMethod] public void Test1() { Approvals.Verify(1); } [TestMethod] public void Test2(
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
}
}
==更新===
根据Llewellyn的建议,我在基类的ctor中添加了以下代码:
public BaseTest()
{
NamerFactory.AdditionalInformation = GetType().Name;
}
正如预期的那样,我为每个测试获得单独的.approved文件。这是一个有趣的假设。我假设您希望都UnitTest1.Test1.approved和UnitTest2.Test1.approved 简而言之,答案并不确切,但有一些解决办法 变通方法#1-NamerFactory(BaseTest.Test1.UnitTest1.approved.txt) 你可以把测试改写成
[TestMethod]
public void Test2()
{
NamerFactory.AdditionalInformation = this.GetType().Name;
Approvals.Verify(2);
}
顺便说一句:如果您使用myget的夜间构建,那么使用using语句会更好
解决方法#2-从OutsideClass调用(UnitTest1.Test1.approved.txt)
您可以提取方法的大部分,然后从外部测试调用它。很可能您想要一个方法的所有功能,但仍然希望测试在扩展类中。批准调用不需要位于最顶层的测试方法中。例如:
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();
}
}
工作起来很有魅力。谢谢
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();
}
}