gpt4 book ai didi

java - 在 shell 中执行时 JUnit 测试的 ComparisonFailure

转载 作者:行者123 更新时间:2023-11-29 19:12:34 24 4
gpt4 key购买 nike

对于以下类 Texts ...

import android.support.annotation.NonNull;
import android.text.TextUtils;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.Collections;
import java.util.List;
import hrisey.Parcelable;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
@Parcelable
public final class Texts implements android.os.Parcelable {

@NonNull List<Text> texts = Collections.emptyList();

public boolean hasTexts() {
return !texts.isEmpty() && textsHaveValues();
}

private boolean textsHaveValues() {
for (Text text : texts) {
if (TextUtils.isEmpty(text.getValue())) {
return false;
}
}
return true;
}

}

...和文本 ...

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import hrisey.Parcelable;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
@Parcelable
public final class Text implements android.os.Parcelable {

private String textKey;
private String value;
}

...我写了这个单元测试:

@RunWith(JUnit4.class)
public class TextsTest {

private Texts texts;

@Before
public void setUp() {
texts = new Texts();
}

@Test
public void hasTextsWithSingleEmptyItem() throws Exception {
texts.setTexts(Collections.singletonList(new Text()));
assertThat(texts.hasTexts()).isFalse();
}

}

测试在 Android Studio 2.1.3 中成功,但当我在我的机器上运行 ./gradlew clean test 时它失败(MacOS 10.11.6、El Capitain、Java 1.7.0_79)。这是错误输出:

com.example.model.TextsTest > hasTextsWithSingleEmptyItem FAILED
org.junit.ComparisonFailure: expected:<[fals]e> but was:<[tru]e>
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(
NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
DelegatingConstructorAccessorImpl.java:45)
at com.example.model.TextsTest.hasTextsWithSingleEmptyItem(TextsTest.java:31)

相关帖子

最佳答案

如何模拟 TextUtils?使用默认的 Android 测试 stub 时,TextUtils.isEmpty(text.getValue()) 部分应始终为 false

请务必使用合适的实现或考虑使用一组不同的字符串实用程序,这些实用程序您可能已经可以使用其他一些依赖项。

JJD编辑

你是对的,谢谢!我用 Unmock plugin .所以我不得不unmock相关包以在单元测试中公开TextUtils:

unMock {
keepStartingWith "android.text."
}

关于java - 在 shell 中执行时 JUnit 测试的 ComparisonFailure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44781705/

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