gpt4 book ai didi

java - 如何编写非封装单元测试?

转载 作者:行者123 更新时间:2023-11-29 08:23:18 28 4
gpt4 key购买 nike

我有一个 Autowiring 的变量

@Autowired
private DocumentConfig documentConfig;

我想用这个配置对象的各种状态来测试 DocumentService。我有哪些选择?什么是最佳选择?

第一个想法是这样的:

@Test
public void save_failure() {
documentConfig.setNameRequired(true);
/*
testing code goes here
*/
documentConfig.setNameRequired(false);
}

但我想更加确定变量在测试后被重置以不干扰其他测试,以确保只有这个测试在问题的根源时才会出错。

我的新想法是这样的:

@Before
public void after() { documentConfig.setNameRequired(true); }
@Test
public void save_failure() {
/*
testing code goes here
*/
}
@After
public void after() { documentConfig.setNameRequired(false); }

但是,这根本不起作用,因为执行前和执行后是针对整个文件而不是针对单个测试。我不希望只为一次测试创建一个新文件。

我现在已经达成妥协:

@Test
public void save_failure() {
documentConfig.setNameRequired(true);
/*
testing code goes here
*/
}
@After
public void after() { documentConfig.setNameRequired(false); }

它似乎做我想做的一切,但我有几个问题。
假设 nameRequired 开始为 false,这是否保证不会干扰其他测试?
有什么办法可以让我更清楚吗?既为了我 future 的自己,也为了其他人。

最佳答案

您可以在每次测试前创建它。好像

private DocumentConfig documentConfig;

@Before
public void createConfig() {
documentConfig = new DocumentConfig(mockedParams);
}

关于java - 如何编写非封装单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55533138/

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