【问题标题】:Cannot print on console.writeline on test methods [duplicate]无法在测试方法上的 console.writeline 上打印 [重复]
【发布时间】:2015-08-27 03:44:04
【问题描述】:

有谁知道为什么这从不打印?我可能忽略了一些简单的事情,但由于某种原因,我无法在测试方法中打印任何内容,这似乎也不起作用,console.write 似乎也不起作用。

如果有的话,有没有办法在测试方法中打印任何东西?

[TestMethod]
public void TestMethodAddUser()
    {

        int []  resul = new int[1]; 

        resultado = gestor.addUser("El Pelucas", "12345", "elpelucassabe@gmail.com");
        Console.WriteLine(resul[1].ToString());

        try
        {

            if (resul[1] > 0)
            {

                switch (resul[1])
                {

                    case -1:

                        Console.WriteLine("Username taken.");

                        break;

                    case -2:

                        Console.WriteLine("Email address taken.");

                        break;

                }

                Console.WriteLine("User added.");
                Assert.IsTrue(true);


            }

        }
        catch (Exception ex)
        {

            Assert.Fail(ex.ToString());

        } 

    }

【问题讨论】:

  • 您应该考虑使用 TestContext 或 Trace.Xxxx 方法来代替在测试期间记录... 通常您会将消息作为 Assert.Xxxx 方法的第二/第三个参数,这样您就知道出了什么问题并且验证假设...
  • @alexeilevenkov 我会调查一下,谢谢

标签: c# mstest


【解决方案1】:

你的 switch case 永远不会执行,因为它们是负数,如果条件为真,你就高了。并且还赋值给resul[1]

所以编辑为:

int input;
if (!int.TryParse(Console.ReadLine(), out input);
{
    Console.WriteLine("Invalid number");
}
else 
{
    resul[1] = input;
}    
if (resul[1] > 0) //use resul[1]<1 for negative switch case
{
     switch (resul[1])
     {
         case 1:    
            Console.WriteLine("Username taken.");    
            break;    
         case 2:    
            Console.WriteLine("Email address taken.");    
            break;    
     }    
     Console.WriteLine("User added.");
     Assert.IsTrue(true);
}

编辑:Harshit Shrivastava 说得对,您已经声明了长度为 1 的数组,但是您在第二个索引处分配了值。所以用resul[0]替换resul[1]

【讨论】:

    【解决方案2】:

    您的代码存在多个问题。

    • 您没有为数组分配任何值。
    • 您创建了一个包含 1 个元素的数组,并且您正在尝试使用该数组的第二个元素
    • 您使用了错误的大小写条件。

    运行这个

    public void TestMethodAddUser() 
    {
        int[] resul = new int[1];
        resul[0] = 1;
    
        Console.WriteLine(resul[0].ToString());
    
        try 
        {
            if (resul[0] > 0) 
            {
                switch (resul[0]) 
                {
                    case 1:
                        Console.WriteLine("Username taken.");
                        break;
    
                    case 2:
                        Console.WriteLine("Email address taken.");
                        break;
                }
    
                Console.WriteLine("User added.");
            }
    
        }
        catch (Exception ex) 
        {
    
        }
    }
    

    【讨论】:

    • @X-TECH 只是有点不同的问题:)
    • 只是为了澄清数组将始终具有来自方法 gestor 的 -1、-2 或 n。不过非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2013-05-20
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多