Xunit - 参数化测试 - Class 属性 - C#
Xunit - Parameterized Tests - Class Properties - C#
我正在使用 Xunit 运行 一些 Selenium 测试。我想对一些测试进行参数化,但遇到了一些困难。
我有一个 class,其中元素的定位器存储为属性“IssuesLogUtils”
public class IssuesLogUtils
{
// Page Heading
public By page_heading { get; set; } = By.Id("ctl00_lblPageTitle");
public By issue_title { get; set; } = By.Id("ctl00_ContentPlaceHolder1_txtNonComplianceName");
然后我在另一个 TestClass 文件中进行 Xunit 测试。
我只想在我的测试中使用 IssuesLogUtils 的属性作为参数。
例如
[Theory]
[InlineData(issues_log_utils.ifco_radial)]
[InlineData(issues_log_utils.issue_title)]
我在网上找到了一些文章,指出了执行此操作的非常复杂的方法。有什么直接的方法吗?我不想创建一个参数列表,然后将列表传入。
But Xunit won't let me use a property as a param
这不是 XUnit 故障。 InlineData
属性值必须在编译时“已知”,类似于常量。
某些 class 实例的属性是运行时值,不能用于常量或属性值。
注意你不需要创建一个class你可以使用带有MemberData
属性的静态方法,你可以把它放在测试方法旁边,所以你在阅读时很容易看到它测试方法。
public static IEnumerable<object[]> MyIssuesData()
{
var issues = new IssuesLogUtils();
yield return new object[] { issues.page_heading };
yield return new object[] { issues.issue_title };
}
[Theory]
[MemberData(nameof(MyIssuesData))]
public void Should_do_nothing(By issue)
{
var result = DoSomethingWith(issue);
result.Should().BeEmpty();
}
我正在使用 Xunit 运行 一些 Selenium 测试。我想对一些测试进行参数化,但遇到了一些困难。
我有一个 class,其中元素的定位器存储为属性“IssuesLogUtils”
public class IssuesLogUtils
{
// Page Heading
public By page_heading { get; set; } = By.Id("ctl00_lblPageTitle");
public By issue_title { get; set; } = By.Id("ctl00_ContentPlaceHolder1_txtNonComplianceName");
然后我在另一个 TestClass 文件中进行 Xunit 测试。 我只想在我的测试中使用 IssuesLogUtils 的属性作为参数。
例如
[Theory]
[InlineData(issues_log_utils.ifco_radial)]
[InlineData(issues_log_utils.issue_title)]
我在网上找到了一些文章,指出了执行此操作的非常复杂的方法。有什么直接的方法吗?我不想创建一个参数列表,然后将列表传入。
But Xunit won't let me use a property as a param
这不是 XUnit 故障。 InlineData
属性值必须在编译时“已知”,类似于常量。
某些 class 实例的属性是运行时值,不能用于常量或属性值。
注意你不需要创建一个class你可以使用带有MemberData
属性的静态方法,你可以把它放在测试方法旁边,所以你在阅读时很容易看到它测试方法。
public static IEnumerable<object[]> MyIssuesData()
{
var issues = new IssuesLogUtils();
yield return new object[] { issues.page_heading };
yield return new object[] { issues.issue_title };
}
[Theory]
[MemberData(nameof(MyIssuesData))]
public void Should_do_nothing(By issue)
{
var result = DoSomethingWith(issue);
result.Should().BeEmpty();
}