gpt4 book ai didi

java - 如何为具有私有(private)字段的类编写junit?

转载 作者:行者123 更新时间:2023-12-02 01:48:30 27 4
gpt4 key购买 nike

我有一个用于电子邮件验证的类。该类有两个私有(private) String 字段,我从其中注入(inject)了 application.properties 中的一个值。 .

public class EmailValidation {

private final String someString = "xyz"

@Value("${regex}")
private String emailRegex;

// methods
}


public class EmailValidaitonTest {

private final EmailValidation obj = new EmailValidation();

//missing emailRegex
}

现在我必须为此编写一个单元测试。这个类没有依赖性,所以我决定使用 new EmailValidationTest 中的运算符class 为类对象。现在,我可以访问字符串 someString但我无法获得 emailRegex 的值因为它是由 Spring 注入(inject)的。我如何在测试类中设置它的值,并且我希望它的值与我的 application.properties 中的值相同.

最佳答案

您使用ReflectionTestUtils.setField在测试用例中注入(inject)属性值。

 public class EmailValidationTest{
private @InjectsMock EmailValidation validation;
private String emailRegexPattern = "^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$";

@BeforeAll
public void setUp(){
ReflectionTestUtils.setField(validation, "emailRegex", emailRegexPattern);
}

//your test cases over here.
}

关于java - 如何为具有私有(private)字段的类编写junit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53352430/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com