是我的Specflow项目的Step Definition类的摘录。
在第一种方法 public void WhenIExtractTheReferenceNumber()我可以成功地从被测试的应用程序中提取文本,并且我已经使用Console.WriteLine();
证明了这一点。我需要能够在我的班级 I.e中使用其他方法中的这个文本。 public void WhenIPrintNumber(); 但我不知道该怎么做!
我读到了Get / Set,但是我无法使用它。所以我想我是否有可能以某种方式使我的 var result 全局化,以便我可以在测试期间随时调用它?
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);
}
}
}
提前感谢任何想法。
答案 0 :(得分:0)
以下是我的问题的解决方案。现在我可以从我班级中的任何方法访问我的变量。我还包括我用来分割我的字符串然后使用字符串的第一部分的代码。在我的情况下,我需要'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
}
}
}
我希望这有助于其他人:)