gpt4 book ai didi

java - AndroidJUnit4.class + org.junit.Assume.assumeTrue = AssumptionViolatedException

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:44:12 25 4
gpt4 key购买 nike

我已经设法将我的 Android 项目转移到 JUnit4,当然,我想这样做的主要原因是行不通。如果有人在这里有想法,会喜欢任何帮助。

我要解决的问题是,如果构建未指向登台服务器,我想自动跳过某些测试。我已经使用 BUILD_TYPE 进行了设置,它使用 gradle 注入(inject)基本 URL。

我在我的设置中设置了一个 assumeThat 子句,它可以正确识别构建何时未暂存,但它不会停止并忽略测试的其余部分,而是抛出异常并失败。

p>

这是我的实时 API 测试的基类 - 我用 @RunWith(AndroidJUnit4.class) 注释了它的下降,所以理论上这应该始终与 JUnit4 runner 一起运行:

package com.[my package].nonuitests.liveservertests;

import android.support.test.runner.AndroidJUnit4;
import com.[my package].nonuitests.BaseAndroidTest;
import org.junit.Test;
import org.junit.runner.RunWith;

/**
* Tests against the live API. All tests descending from this class will
* be ignored if the BUILD_TYPE is not staging.
*/
@RunWith(AndroidJUnit4.class)
public class BaseLiveServerTests extends BaseAndroidTest {

private static final String STAGE = "staging";

/******************
* SETUP/TEARDOWN *
******************/

@Override
public void setUp() throws Exception {
super.setUp();

//TODO: Y U NO WORK?!
//This should cause the rest of the test to be skipped if it fails,
//but is instead throwing an AssumptionViolatedException.
assumeTrue(STAGE.equals(BuildConfig.BUILD_TYPE));
}
}

那么,我的问题:

  1. 有更好的方法吗?从理论上讲,这可以通过 flavor 来完成,但我早些时候尝试过,它让其他一切都变得方式变得更加复杂。
  2. 我的研究表明,Google 没有在他们的运行程序中实现某些导致此问题失败的事情,但我花了很多时间来弄清楚我可以/应该做些什么来解决这个问题。关于我应该子类化以使其按预期工作的事情的任何建议?

任何其他想法将不胜感激。谢谢!

编辑(1/26/15 上午 11:40 CST):根据 Grzesuav's suggestion ,我拿了a stab在将其实现为 @Rule 时,但目前它仍然无法正常工作。这似乎是一条很有前途的道路,但目前行不通。

编辑 2(1/26/15 中午 12:15 CST):好的,now it's working .

最佳答案

https://github.com/junit-team/junit/wiki/Assumptions-with-assume

ad 2) 自定义运行程序可以不同地处理 assume 语句。要修复它,您应该编写自己的 Android 运行器版本并实现一种处理假设的方法,就像 native JUnit 运行器所做的那样,或者为 android 测试运行器制造一个错误。

广告 1) 我建议:尝试使用 JUnit 规则:

http://www.codeaffine.com/2013/11/18/a-junit-rule-to-conditionally-ignore-tests/ http://cwd.dhemery.com/2010/12/junit-rules/

关于java - AndroidJUnit4.class + org.junit.Assume.assumeTrue = AssumptionViolatedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28145735/

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