gpt4 book ai didi

android - ActivityInstrumentationTestCase2和static final : fields become null after first test的使用

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:28 24 4
gpt4 key购买 nike

这看起来真的像是发生了一些魔法,我很想知道为什么会这样 :)

这是我的单元测试:

public class SelectThemeActivityTest 
extends ActivityInstrumentationTestCase2<SelectThemeActivity> {

private final static int[] STATIC_ARRAY = { 0, 1, 2 };

public SelectThemeActivityTest() {
super("com.the7art.simplewallpaper", SelectThemeActivity.class);
}

@Override
protected void setUp() throws Exception {
super.setUp();
// some array usage here - will throw NullPointerEcxeption on second test
// see description below
STATIC_ARRAY[0] = 2;
}

@Override
protected void tearDown() throws Exception {
super.tearDown();
}

public void testFirst() {

}
public void testSecond() {

}
public void testThird() {

}
}

如果我运行这个测试用例,第一个测试成功完成,所有其余测试都失败了,因为 setUp() 抛出了 NullPointerException - 该行它试图访问 STATIC_ARRAY。

更让我困惑的是,如果我将测试用例更改为扩展 AndroidTestCase 而不是 ActivityInstrumentationTestCase2,那么所有测试都会成功完成!魔法! :-)

此外,如果我从 STATIC_ARRAY 中删除“static”关键字,测试也会成功。

很明显,某些东西正在修改我的 STATIC_ARRAY,通过在测试运行之间将其设置为空,很可能是在 tearDown() 中,并且某些东西ActivityInstrumentationTestCase2,但如何跟踪那个东西? :-) 有什么想法吗?

最佳答案

原因是从 super.tearDown() 调用的 scrubClass() 方法:google-groups discussion .解决方案是 - overriding this method .

关于android - ActivityInstrumentationTestCase2和static final : fields become null after first test的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6634360/

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