public void GetOptionalComponents_IsValid()
        {
            var step     = new TestBuildStepWithRequirements();
            var pipeline = BuildPipeline.CreateInstance(p => p.BuildSteps.Add(step));
            var config   = BuildConfiguration.CreateInstance((c) =>
            {
                c.SetComponent(new TestOptionalComponentA());
                c.SetComponent(new TestOptionalComponentB());
            });
            var context = new BuildContext(pipeline, config);

            Assert.That(step.GetOptionalComponents(context).Select(c => c.GetType()), Is.EquivalentTo(new[] { typeof(TestOptionalComponentA), typeof(TestOptionalComponentB) }));
            Assert.That(step.GetOptionalComponents <TestOptionalComponentA>(context).Select(c => c.GetType()), Is.EquivalentTo(new[] { typeof(TestOptionalComponentA) }));
            Assert.That(step.GetOptionalComponents <TestOptionalComponentB>(context).Select(c => c.GetType()), Is.EquivalentTo(new[] { typeof(TestOptionalComponentB) }));
        }