我有一个基类作为
public class PlaywrightFixture
{
public Task<IPlaywright> Playwright { get; set; } = default;
public Task<IBrowser> Browser { get; set; } = default;
private readonly PlaywrightFixture _playwrightFixture;
private static string _readonlypageUrl;
private readonly IConfiguration _iAppSettingConfiguration;
private UserCredentials _userCredentials = new UserCredentials(null, null);
public PlaywrightFixture(PlaywrightFixture playwrightFixture)
{
_iAppSettingConfiguration = IAppSettingConfiguration.InitConfiguration();
_readonlypageUrl = _iAppSettingConfiguration["baseUrl"];
_iAppSettingConfiguration.GetSection("user").Bind(_userCredentials);
_playwrightFixture = playwrightFixture;
//_playwrightFixture.Playwright = Playwright.CreateAsync();
_playwrightFixture.Browser = _playwrightFixture.Playwright.Result.Chromium.LaunchAsync(
new BrowserTypeLaunchOptions
{
Headless = false,
SlowMo = 200,
});
}
}
单元测试用例
public class GivenAccount : PlaywrightFixture
{
private readonly PlaywrightFixture _playwrightFixture;
private static string _readonlypageUrl;
private readonly IConfiguration _iAppSettingConfiguration;
private UserCredentials _userCredentials = new UserCredentials(null, null);
public GivenAccount(PlaywrightFixture playwrightFixture) : base(playwrightFixture)
{
}
[Test]
public async Task Then_Login_Page_Should_Load()
{
var page = await _playwrightFixture.Browser.Result.NewPageAsync();
await page.GotoAsync(_readonlypageUrl);
string title = await page.TitleAsync();
Assert.AreEqual("6clicks", title);
}
}
异常
OneTimeSetUp: No suitable constructor was found
Exception doesn't have a stacktrace
-----
No suitable constructor was found
Exception doesn't have a stacktrace
您已经创建了一个基于PlaywriteFixture
的fixtureGivenAccount
。它的构造函数接受一个参数,该参数是另一个PlaywriteFixture
。
然而,您并没有给NUnit一个参数来构造您的fixture。您应该使用[TestFixturesource("name_of_your_source")]
执行此操作在CCD_ 5类上。