@Email
violations.iterator().next().getMessage()
测试email注解出现示例和实际情况返回信息不一致。
可以使用Locale.setDefault(Locale.ENGLISH);配置后,后返回示例的英文校验信息。
default Locale.CHINA
assertEquals(“不是一个合法的电子邮件地址”, violations.iterator().next().getMessage());
Locale.ENGLISH
assertEquals(“must be a well-formed email address”, violations.iterator().next().getMessage());
mvn配置信息
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
关键代码.
Locale.setDefault(Locale.ENGLISH);
看到一个类有Locale.ENGLISH的配置,但是我并没有找到Locale.ENGLISH判断的代码。
这里只做记录。
12:38 AM 2/6/2022
org.junit.jupiter.api.condition.OS
完整代码
import java.time.LocalDate;
import java.time.Month;
import java.util.Locale;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import org.hibernate.validator.internal.engine.ConstraintViolationImpl;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
/**
*
* @author HASEE
*/
public class StaffValidationTest {
private static Validator validator;
@BeforeAll
public static void beforeAll(){
//关键代码,设置地区。我试过直接设置win10 时间和地区不生效。
Locale.setDefault(Locale.ENGLISH);
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
}
@BeforeEach
public void beforeEach(){
}
//test methods execute test cases, and we assert pass/fail
// rainy day test case - meaning we expect validation to fail, but
// because we assert in a way that we expect failure, the test case passes
@Test
public void testInvalidStaffEmailValidationShouldFail() {
Staff c = new Staff();
c.setStaffId(202);
c.setFirstName("C...");
c.setLastName("X...");
c.setAddressId(202);
c.setStoreId(202);
c.setActive(1);
c.setEmail("invalidemail*at*xxx.edu");
c.setUsername("X.. C...");
//pass
// c.setLastUpdate(LocalDate.now());
c.setLastUpdate(LocalDate.of(2019, Month.MARCH, 11));
//fail
// c.setLastUpdate(LocalDate.of(2023, Month.MARCH, 11));
Set<ConstraintViolation<Staff>> violations = validator.validate(c);
for(ConstraintViolation<Staff> validation : violations){
System.out.println(validation.toString());
}
assertEquals(1, violations.size());
System.err.println("11111111111");
System.err.println(violations.iterator().next().getMessage());
//
assertEquals("不是一个合法的电子邮件地址", violations.iterator().next().getMessage());
//
// assertEquals("must be a well-formed email address", violations.iterator().next().getMessage());
}
@Test
public void validStaffValidationShouldPass() {
Staff c = new Staff();
c.setStaffId(202);
c.setFirstName("C...");
c.setLastName("X...");
c.setAddressId(202);
c.setStoreId(202);
c.setActive(202);
//pass
c.setEmail("xcxxx@xxx.edu");
//fail
// c.setEmail("xcxxx*xxx.edu");
c.setUsername("X...C....");
//pass
c.setLastUpdate(LocalDate.now());
Set<ConstraintViolation<Staff>> violations = validator.validate(c);
for (ConstraintViolation<Staff> violation : violations) {
System.out.println(violation.toString());
}
assertEquals(0, violations.size());
}
@AfterEach
public void afterEach(){
}
@AfterAll
public static void afterAll(){
}
}