首页 > 解决方案 > 错误 CLassInitialize 签名错误。方法必须是静态的,公开的,不返回值

问题描述

大家,我正在为我的 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

            };
        }
    }

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

标签: c#unit-testing

解决方案


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

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

并且您可能还需要为 the 应用相同的内容TestInitialize

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

推荐阅读