Variables C#如何在(步骤定义)类中将变量定义为全局变量
下面是我的Specflow项目的步骤定义类的摘录 在第一种方法public void WhenIExtractTheReferenceNumber()中,我可以成功地从被测应用程序中提取文本,并且我已经使用Console.WriteLine()证明了这一点 我需要能够在我的类中的其他方法中使用此文本,即public void WhenIPrintNumber()但我不知道该怎么做 我读到了关于Get/Set的文章,但我无法让它工作。所以我在想,是否有可能以某种方式使我的var结果全局化,以便我可以在测试期间随时调用它Variables C#如何在(步骤定义)类中将变量定义为全局变量,variables,global,Variables,Global,下面是我的Specflow项目的步骤定义类的摘录 在第一种方法public void WhenIExtractTheReferenceNumber()中,我可以成功地从被测应用程序中提取文本,并且我已经使用Console.WriteLine()证明了这一点 我需要能够在我的类中的其他方法中使用此文本,即public void WhenIPrintNumber()但我不知道该怎么做 我读到了关于Get/Set的文章,但我无法让它工作。所以我在想,是否有可能以某种方式使我的var结果全局化,以便我可
namespace Application.Tests.StepDefinitions
{
[Binding]
public class AllSharedSteps
{
[When(@"I extract the reference number")]
public void WhenIExtractTheReferenceNumber()
{
Text textCaseReference = ActiveCase.CaseReferenceNumber;
Ranorex.Core.Element elem = textCaseReference;
var result = elem.GetAttributeValue("Text");
Console.WriteLine(result);
}
[When(@"I print number")]
public void WhenIPrintNumber()
{
Keyboard.Press(result);
}
}
}
提前感谢您的建议。这是我问题的答案。现在我可以从类中的任何方法访问变量。我还包含了用于拆分字符串,然后使用字符串的第一部分的代码。在我的例子中,我需要12345-一些文本的数字部分:
namespace Application.Tests.StepDefinitions
{
[Binding]
public class AllSharedSteps
{
private string result;
public Array splitReference;
[When(@"I extract the case reference number")]
public void WhenIExtractTheCaseReferenceNumber()
{
Text textCaseReference = ActiveCase.CaseReferenceNumber;
Ranorex.Core.Element elem = textCaseReference;
result = elem.GetAttributeValue("Text").ToString();
splitReference = result.Split('-'); // example of string to be split '12345 - some text'
Console.WriteLine(splitReference.GetValue(0).ToString().Trim());
}
[When(@"I print number")]
public void WhenIPrintNumber()
{
Keyboard.Press(result); // prints full string
Keyboard.Press(splitReference.GetValue(0).ToString()); // prints first part of string i.e. in this case, a reference number
}
}
}
我希望这对其他人有所帮助:)我不熟悉您使用的框架,但在我看来,您可以将
result
作为AllSharedSteps
类的静态成员。您可能需要从类的静态构造函数中分配它的值,这样,您运行的测试和顺序就无关紧要了。