$conf, $runtime; function_exists('chdir') AND chdir(APP_PATH); $r = 'mysql' == $conf['cache']['type'] ? website_set('runtime', $runtime) : cache_set('runtime', $runtime); } function runtime_truncate() { global $conf; 'mysql' == $conf['cache']['type'] ? website_set('runtime', '') : cache_delete('runtime'); } register_shutdown_function('runtime_save'); ?>c# - How to access test class state from custom IApplyToTest-attribute? - Stack Overflow|Programmer puzzle solving
最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

c# - How to access test class state from custom IApplyToTest-attribute? - Stack Overflow

matteradmin13PV0评论

I have a test class with TestFixtureSource with two values: "Unit" and "Integration". These values are values of mode. Based on this mode the class sets dependencies up as mocks or real implementations. Some class tests are actual for both modes, while others are actual only for one of them. I am trying to find how to skip or ignore some tests depending on the mode value. So, I want to do something like the following

[TestFixtureSource(nameof(UnitOrIntegration))]
class Tests(string Mode)
{
     [SetUp]
     void Setup()
     {
         if (Mode == "Unit") { ... }
         if (Mode == "Integration") { ... }
     }

     [Test] //actual for both modes
     void Test1() { ... }
     
     [Test][WhenModeIs("Unit")]
     void Test2() { ... }
     
     [Test][WhenModeIs("Integration")]
     void Test3() { ... }
}

I found something that looks like can help

    [AttributeUsage(
          AttributeTargets.Method, 
          AllowMultiple = false,
          Inherited = false)]
    public class WhenModeIsAttribute(string Mode)
         : NUnitAttribute, IApplyToTest
    {
        public void ApplyToTest(Test test)
        {
            if (/* I need check mode here */)
            {
                test.RunState = RunState.Ignored;
                test.Properties.Set(
                   PropertyNames.SkipReason, 
                   $"It is not actual for {Mode}");
            }
        }
    }

But I can't find a way to access the mode value. How to do that?

Post a comment

comment list (0)

  1. No comments so far