无法从另一个项目访问变量

Unable to access variables from another project

我正在尝试使用 c# (Restsharp) 自动执行 API 测试。我在同一个解决方案中有 2 个项目。一个项目是控制台应用程序,我试图在其中保留方法,而另一个项目是单元测试项目,我计划在其中保留测试用例。

我可以通过创建方法的对象来访问 BASE 项目中的方法,但无法访问该方法中的变量来应用断言。知道我错过了什么吗? (我是 c# 的新手)。

基础项目

中的方法class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using RestSharp;


namespace Base
{
    public class Methods
    {
        
        public void GetMethod(long ID)
        {
            var client = new RestClient("getUrl");
            var request = new RestRequest(Method.GET);
            request.AddParameter("userId", ID);
            IRestResponse response = client.Execute(request);
            HttpStatusCode statusCode = response.StatusCode;
            int nStatusCode = (int)statusCode;

        }
    }
}

测试项目

中的单元测试class
using System;
using System.Net;
using Base;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using RestSharp;

namespace Tests
{
    [TestClass]
    public class UnitTests
    {
       

        [TestMethod]
        public void StatusOK()
        {
            //Arrange, Act, Assert
            var methods = new Methods();
            methods.GetMethod(2330013)
           Assert.IsTrue(nStatusCode.Equals(200));

           

        }
    }
}

UnitTest 无法读取 nStatusCode 变量以及响应变量。 我已经在项目之间添加了依赖关系。 感谢帮助!!

解决该问题的一个方法是使 GetMethod return 状态代码:

public int GetMethod(long ID)
        {
            ...
            int nStatusCode = (int)statusCode;
            return nStatusCode;
        }

然后测试可以检查 return 值。

var c = methods.GetMethod(2330013)
Assert.AreEqual(200, c);

PS。我建议使用 Assert.AreEqual 而不是 Assert.IsTrue,因为在代码不是 200 的情况下,测试失败输出将包含错误值。使用 IsTrue 你只会知道它不是 200,但你不会知道它是什么。