![](/img/trans.png)
[英]Nunit test gives result OneTimeSetUp: No suitable constructor was found
[英]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
才能運行測試,但不會創建容器,因為在測試開始運行之前不會調用SetUp
或OneTimeSetUp
。
[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.