C# 如何按顺序运行多个[TestMethod]?
我在问如何运行多个测试方法,以便它们在同一个文件中 例如,我有这个单元测试文件名C# 如何按顺序运行多个[TestMethod]?,c#,unit-testing,selenium,C#,Unit Testing,Selenium,我在问如何运行多个测试方法,以便它们在同一个文件中 例如,我有这个单元测试文件名 public class UniTest1 { [TestMethod] public void Login() [TestMethod] public void Logout() [TestMethod] public void SignIn() [TestMethod] public void ForgetPassword() } 我要按以下顺序排列: 登录() 注销() 伪造密码() 签名() 只是
public class UniTest1
{
[TestMethod]
public void Login()
[TestMethod]
public void Logout()
[TestMethod]
public void SignIn()
[TestMethod]
public void ForgetPassword()
}
我要按以下顺序排列:
登录()
注销()
伪造密码()
签名()
只是想澄清一下,我希望此顺序检查此电子邮件是否已经存在如果您将测试用例结构为包含该特定用例的设置、操作和断言的代码,则不需要按任何特定顺序运行它们。一个好的建议是在测试用例之间不要有任何依赖关系,例如,您需要依赖于“登录”测试在“注销”之前运行。相反,“注销”案例中测试代码的设置将启动登录会话,并为“注销”操作的发生设置阶段 如果发现多个测试用例共享公共设置代码和拆卸代码,则可以在某些方法上使用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.. */
}
}
}
您正在设置一个包含多个步骤的大型测试,但不是四个专用测试 这里有一个例子:
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();
}
}
正如您所看到的,每个测试都是独立于其他测试的
如果您需要注销测试,您必须为其设置环境,而不是“希望”其他测试也这样做。您可以设置注销测试,您可以告诉我们有关此问题的更多信息吗?为什么您希望它们按特定顺序运行?你真的要做一个测试(检查登录、注销、登录和密码重置),而不是4个测试吗?你的意图是什么?当你可以建立一个有序的测试时,你应该考虑是否有很好的相互依赖的测试用例。这表明你的测试依赖于他们不应该依赖的东西,这可能会导致后续问题。我想知道为什么在我的vs研究2017中没有顺序测试选项理想情况下,测试的顺序应该无关紧要。他们真的应该是独立的。更可能的情况是,您应该创建一个测试,它可以为您完成所有事情。我认为TestInitialize不是这种情况下的解决方案。每个测试都需要一个特殊的init。如果每个测试都需要一个特殊的init,他应该在每个测试用例中进行初始化,正如我在我的示例中所述。这是测试用例代码的设置部分。