2016-08-18 80 views
0

我正在做一个类库的单元测试,我被困在如何测试需要测试场景的方法上,比如检查是否接受少于8个字符的密码,检查密码可以接受8个或更多字符,并检查前面空格不能接受的密码。单元测试类

下面的代码来自类库。

public class PasswordChecker 
{ 
    public bool CheckPassword(string pwd) 
{ 
    if (pwd.Length >= 8 && !pwd.StartsWith("")) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 
} 

下面的代码来自测试项目。

using System; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 
using 12kiajunPA03; 

namespace PasswordCheckerTest 
{ 
[TestClass] 
public class PasswordCheckerTest 
{ 
    [TestMethod] 
    public void Checkpassword() 
    { 
     string pwd = "1234qa1"; 

     Checkpassword password = new Checkpassword("John", pwd); 

     try 
     { 

     } 
     catch 
     { 

     } 
    } 
} 

}

回答

2

我想这将是这个样子:

using System; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 
using 12kiajunPA03; 

namespace PasswordCheckerTest 
{ 
    [TestClass] 
    public class PasswordCheckerTest 
    { 
     [TestMethod] 
     public void Checkpassword8CharsLong() 
     { 
      string validPassword = "12345678"; 
      string invalidPassword = "abc"; 

      PasswordChecker checker = new PasswordChecker(); 

      Assert.IsTrue(checker.CheckPassword(validPassword)); 
      Assert.IsFalse(checker.CheckPassword(invalidPassword)); 
     } 
    } 
} 

使用相同的想法,你可以写检查的密码必须符合其他条件的其他测试。

+0

您将要使用测试用例或多个测试。如果第一次检查失败,第二次检查永远不会运行在可以隐藏错误的测试中。 – LukeW

+0

你确定吗?我对这个测试框架并不熟悉,但根据我在其他框架中使用'Assert'的经验,即使先前的测试失败,测试也会继续进行。 – TW80000

+0

我还没有看到一个框架做到这一点,虽然我可能是错误的MSTest,我使用XUnit进行测试。 – LukeW