我在问如何运行多个测试方法,以便它们位于同一文件中。
例如,我具有此单元测试文件名
public class UniTest1
{
[TestMethod]
public void Login()
[TestMethod]
public void Logout()
[TestMethod]
public void SignIn()
[TestMethod]
public void ForgetPassword()
}
我希望他们按此顺序
Login()
注销()
ForgetPassword()
SignIn()
请澄清一下,我希望此订单检查此电子邮件是否已经存在
答案 0 :(得分:0)
如果您将测试用例构造为包含该特定用例的设置,操作和断言的代码,则无需按任何特定顺序运行它们。一个很好的建议是不要在测试用例之间建立任何依赖关系,例如,您需要依赖“登录”测试才能在“注销”之前运行。而是在“注销”情况下设置测试代码将启动已登录的会话,并为“注销”操作发生做好准备。
如果发现多个测试用例共享相同的设置代码和拆卸代码,则可以在某些方法上使用TestInitialize和TestCleanup属性,例如:
namespace UserInteractionTests
{
[TestClass]
public class UserAuthenticationTestt
{
[TestInitialize]
public void TestSetup()
{
/* Put your common initialization code here */
}
[TestMethod]
public void AnAuthorizedUserCanLogin()
{
/* put your setup, action and assertion here
from your system under test
*/
}
[TestMethod]
public void ALoggedInUserCanLogOut()
{
/* put your setup, action and assertion here
from your system under test
*/
}
[TestCleanup]
public void TestCleanup()
{
/* Put your common teardown code here.. */
}
}
}
答案 1 :(得分:0)
您要设置一个包含多个步骤的大型测试,而不是四个专用测试。
这里有个例子:
public class UniTest1
{
[TestMethod]
public void LoginSuccess()
{
// Try to Log in
o.Login("user", "pw");
Assert.AreEqual(true, o.ImLoggedIn);
}
[TestMethod]
public void LoginWrongPw()
{
// Try to Log in
o.Login("user", "wrongpw");
Assert.AreEqual(false, o.ImLoggedIn);
}
[TestMethod]
public void LogOutSuccess()
{
// Login
o.Login("user", "pw");
// Check if steup is completed
Assert.AreEqual(true, o.ImLoggedIn);
bool ok = o.LogOut();
Assert.AreEqual(true, ok);
}
[TestMethod, ExpectedException(NotLoggedInException)]
public void LogOutNoLogout()
{
// Try to Log in
Assert.AreEqual(false, o.ImLoggedIn);
bool ok = o.LogOut();
}
}
如您所见,每个测试都独立于其他测试。
如果您需要注销测试,则必须为其设置环境,而不是“希望”其他测试如此。