Variables C#如何在(步骤定义)类中将变量定义为全局变量

Variables C#如何在(步骤定义)类中将变量定义为全局变量,variables,global,Variables,Global,下面是我的Specflow项目的步骤定义类的摘录 在第一种方法public void WhenIExtractTheReferenceNumber()中,我可以成功地从被测应用程序中提取文本,并且我已经使用Console.WriteLine()证明了这一点 我需要能够在我的类中的其他方法中使用此文本,即public void WhenIPrintNumber()但我不知道该怎么做 我读到了关于Get/Set的文章,但我无法让它工作。所以我在想,是否有可能以某种方式使我的var结果全局化,以便我可

下面是我的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
类的静态成员。您可能需要从类的静态构造函数中分配它的值,这样,您运行的测试和顺序就无关紧要了。