簡體   English   中英

OneTimeSetUp:使用 nunit 和 autofac 時找不到合適的構造函數

[英]OneTimeSetUp: No suitable constructor was found when using nunit and autofac

我正在嘗試讓 nunit 和 autofac 一起為 Selenium 測試框架工作。

我明白為什么我會得到OneTimeSetUp: No suitable constructor was found錯誤(因為 nunit 無法啟動UnitTest1如果它有一個非空的ctor),但我不知道如何解決這個問題。

這似乎是一個雞和蛋的問題; nunit 需要IHomePage才能運行測試,但不會創建容器,因為在測試開始運行之前不會調用SetUpOneTimeSetUp

    [TestFixture]
    public class UnitTest1
    {
        IHomePage _homePage;
        private static IContainer Container { get; set; }

        [SetUp]
        public void SetUp()
        {
            var builder = new ContainerBuilder();
            builder.RegisterType<HomePage>().As<IHomePage>();
            builder.RegisterType<LoginPage>().As<ILoginPage>();
            Container = builder.Build();
            using (var scope = Container.BeginLifetimeScope())
            {
                var writer = scope.Resolve<ITestRunner>();
                writer.RunTest();
            }
        }

        public UnitTest1(IHomePage homePage)
        {
            _homePage = homePage;
        }

        [Test]
        public void TestMethod11()
        {
            // do something testing with _homePage
            _homePage.ClickLogin();
        }
    }

    public class HomePage : IHomePage
    {
        ILoginPage _loginPage;

        public HomePage(ILoginPage loginPage)
        {
            _loginPage = loginPage;
        }

        public ILoginPage ClickLogin()
        {
            return _loginPage;
        }
    }

這只是部分答案,因為我對 Autofac 一無所知。

但是從 NUnit 的角度來看......

NUnit 構建您的類。 要做到這一點,它需要要么

  • 默認構造函數,或
  • 您已為其提供參數的非默認構造函數。

您有一個非默認構造函數,但您沒有告訴 NUnit 與該構造函數一起使用什么參數。

你告訴 NUnit 使用什么參數的方法是將它們作為參數提供給TestFixtureAttribute或使用TestFixtureSourceAttribute ,這增加了一個間接級別。 也許其他人可以添加 Autofac 在這種情況下如何與 NUnit 交互。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM