检查Castle.Windsor.IWindsorContainer是否可以解析

时间:2015-09-16 15:37:02

标签: castle-windsor ioc-container

Castle Windsor是否有办法查看IContainer是否可以解析所有实例。

我的Nunit Test DLL中有一个类。我想做的是测试IWindsorContainer是否可以解析所有已注册的安装程序。

如果没有,那么解析器的测试用例应该失败。

我现在上课的是

    using Castle.MicroKernel.Registration;
    using Castle.Windsor;
    using NUnit.Framework;
    using System;

    namespace UnitTest
    {
        public class IOCBaseTest<T> : IDisposable
        {
            protected IWindsorContainer _container;

            public IOCBaseTest()
            {
                _container = new WindsorContainer();

                _container.Register(Classes.FromAssemblyNamed("IOC").InNamespace("IOC.Installers.Business", false));
                _container.Register(Classes.FromAssemblyNamed("UnitTest.Moq"));
            }

            [TestCase]
            public void TestWetherIOCContainerIsCorrectlySetup()
            {
var _handler = _container.Kernel.GetHandler(typeof(T)).CurrentState;

            Assert.AreEqual(_handler, Castle.MicroKernel.HandlerState.Valid);
            }
            [TestFixtureSetUp()]
            public abstract void SetupTests();

            public void Dispose()
            {
                _container.Dispose();
            }
        }
    }

我知道当我调试IWindsorContainer时,我可以看到是否存在可能配置错误的解析器。但是我如何访问它?或者有没有办法测试_container是否有任何问题。

编辑:我想我可能已找到问题,但需要测试更多...... 感谢

1 个答案:

答案 0 :(得分:1)

烨。 Windsor为此目的拥有诊断子系统。 The documentation has all the details.

另外,我建议您将注册码封装在installers