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

Check If Castle.Windsor.IWindsorContainer can Resolve

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

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

如果不是,那么解析器的测试用例应该会失败。

我现在的class是

    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 是否有任何问题。

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

是的。为此,温莎有诊断子系统。 The documentation has all the details.

此外,我建议将您的注册码封装在 installers 中。