【问题标题】:error CLassInitialize has wrong signature. The method must be static, public, does not return a value错误 CLassInitialize 签名错误。方法必须是静态的,公开的,不返回值
【发布时间】:2020-01-27 06:03:18
【问题描述】:

大家,我正在为我的 Builder 类编写单元测试,但出现以下错误。 方法 TestDB.BuilderTest.CustomerBuilderTest.CLassInitialize 具有错误的签名。该方法必须是静态的,public 不返回值,并且应该采用 TestContext 类型的单个参数。此外,如果您在方法中使用 async-await,则返回类型必须为 Task。

这是我的单元测试

    [TestClass]
   public class CustomerBuilderTest
    {
        private static CustomerDeserializer _customerDeserializer;

        private static string path;

        [ClassInitialize]
        public static void CLassInitialize(TestContext context)
        {
            path = Path.Combine(Environment.CurrentDirectory, @"Folder\", "Customer.json");
        }

        [TestInitialize]
        public static void TestInitialize()
        {
            _customerDeserializer = new CustomerDeserializer();

        }

        [TestMethod]
        public void CusomerBuilder_MustReturnCustomers()
        {
            //Arange


            //Act
            var dtos = CustomerDeserializer.Deserialize(path);
            var dto = dtos.FirstOrDefault(e => e.Email == "hi@gmail.com");
            var customer = CustomerBuilder.CustomerBuild(dto);

            //Asset

            Assert.IsNotNull(dto);
            Assert.AreEqual(customer.FirstName,"tina");


        }

    }
}

这是我的 Builder 类

 public class CustomerBuilder
    {
        public static Customer CustomerBuild(DtoCustomer dto)
        {
            return new Customer()
            {
                FirstName = dto.FirstName,
                LastName = dto.LastName,
                Address = dto.Address,
                Email = dto.Email,
                Code = int.Parse(dto.Code),
                PhoneNumber = dto.Phone

            };
        }
    }

我检查了很多网站,但没有找到任何解决方案,您能帮我吗?

【问题讨论】:

  • 您的 ClassInitialize 方法缺少 TestContext 类型的单个参数。
  • 我也这样做了但是我仍然看到同样的错误

标签: c# unit-testing


【解决方案1】:

ClassInitialize 属性需要添加括号,其次尝试使方法名称与属性不同,因为这可能会使编译器感到困惑。所以试试:

[ClassInitialize()]
public void CLassInitialization(TestContext context)
{
    path = Path.Combine(Environment.CurrentDirectory, @"Folder\", "Customer.json");
}

您可能还需要为TestInitialize 应用相同的应用:

[TestInitialize]
public void TestInitialization()
{
    _customerDeserializer = new CustomerDeserializer();
}

【讨论】:

  • 将方法签名更改为非静态和字段
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-08
  • 2011-08-31
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多