2016-08-18 214 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