c# – 有没有办法将代理传递给NUnit TestCase或TestFixture?

前端之家收集整理的这篇文章主要介绍了c# – 有没有办法将代理传递给NUnit TestCase或TestFixture?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
基本上我想能够插入到NUnit中的TestCase或TestFixture方法来改变行为.实质上我想这样做:
  1. [TestFixture]
  2. public class MethodTests
  3. {
  4. public delegate void SimpleDelegate();
  5.  
  6. public static void A()
  7. {
  8. // Do something meaningful
  9. }
  10.  
  11. public static void B()
  12. {
  13. // Do something meaningful
  14. }
  15.  
  16. public static void C()
  17. {
  18. // Do something meaningful
  19. }
  20.  
  21. [TestCase(A,B,C)]
  22. [TestCase(C,A,B)]
  23. [TestCase(C,A)]
  24. public void Test(SimpleDelegate action1,SimpleDelegate action2,SimpleDelegate action3 )
  25. {
  26. action1();
  27. action2();
  28. action3();
  29. }
  30. }

[TestCase(A,C)]的错误

>错误6参数1:无法从“方法组”转换为“对象”
>错误7参数2:无法从“方法组”转换为“对象”
>错误8参数3:无法从“方法组”转换为“对象”

你知道有没有办法得到这样的东西或类似的工作?

解决方法

这是 TestCaseSourceAttribute的救援.

首先,定义一个包含测试用例列表的对象数组.接下来,通过引用对象数组作为Test的[TestCaseSource]来调用测试用例.这应该根据您的意图建立和运行.

  1. private static readonly object[] TestCases =
  2. {
  3. new SimpleDelegate[] { A,C },new SimpleDelegate[] { C,B },A }
  4. };
  5.  
  6. [Test,TestCaseSource("TestCases")]
  7. public void Test(SimpleDelegate action1,SimpleDelegate action3)
  8. {
  9. action1();
  10. action2();
  11. action3();
  12. }

如果你需要一个更复杂的参数列表,你可以使用Tuple而不是SimpleDelegate []创建强类型的参数列表.

猜你在找的C#相关文章