@FixMethodOrder(MethodSorters.NAME_ASCENDING)的作用



import org.junit.*;

import static org.junit.Assert.*;

import org.junit.Test;
import org.junit.runners.MethodSorters;


/**
* UserService测试类
*/
// TODO 填写顺序执行的代码
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class UserServiceTest {

static UserService pUserService;

@BeforeClass
public static void initUserServices(){
pUserService = new UserService();
}

@AfterClass
public static void destroyUserServices(){
pUserService = null;
}

@Test
public void test1Login() {
// TODO: 请填写test1Login方法的单元测试代码
assertFalse(pUserService.login("user", "password2"));
assertFalse(pUserService.login("user1", "password2"));
assertTrue(pUserService.login("user1", "password1"));
}


@Test
public void test2UpdatePassword(){
// TODO: 请填写updatePassword方法的单元测试代码
assertNull(pUserService.updatePassword("user", "password2"));
assertEquals("pass",pUserService.updatePassword("user1", "pass").getPassword());

}

@Test(expected = IllegalArgumentException.class)
public void test3UpdatePasswordException(){
// TODO: 请填写updatePassword方法的单元测试异常代码
pUserService.updatePassword(null, null);
}
}


@FixMethodOrder(MethodSorters.NAME_ASCENDING)是JUnit框架中的一个注解,用于控制测试方法的执行顺序。这个注解应用在测试类上。

  • @FixMethodOrder:这个注解表明我们想要改变默认的测试方法执行顺序。默认情况下,JUnit 4并不保证测试方法的执行顺序,它们通常随机执行。但通过使用这个注解,我们可以指定一个排序策略来决定这些方法的执行顺序。

  • MethodSorters.NAME_ASCENDING:这是排序策略的一种,意味着测试方法将按照它们的方法名的字典(字母)顺序升序执行。换句话说,它会首先执行方法名在字母表中排得最前的测试方法,然后依次执行后面的方法。

使用这个注解的情况通常是当测试方法之间存在依赖关系,需要按特定顺序执行以确保每个测试的预设状态或环境时。但需要注意的是,通常推荐每个测试方法都是独立的,不依赖于其他测试方法的执行结果或状态,以保持测试的隔离性和可维护性。因此,这个注解的使用应当谨慎,并考虑是否有更好的方式来设计测试用例以避免方法间的依赖。

 
posted @ 2024-05-05 19:13  一个小虎牙  阅读(124)  评论(0编辑  收藏  举报