Des*_*erd 5 java junit android junit4 android-testing
我已经设法让我的Android项目转换到JUnit4,当然我想要做的主要原因是无法正常工作.如果有人在这里有想法,会喜欢任何帮助.
我试图解决的问题是,如果构建未指向登台服务器,我想自动跳过某些测试.我已经设置了一个BUILD_TYPE使用gradle注入基本URL的设置.
我assumeThat在我的设置中设置了一个子句,它可以正确识别构建何时不进行分段,但不是暂停和忽略其余的测试,而是抛出异常并失败.
这是我的实时API测试的基类 - 我已经注释了这一点@RunWith(AndroidJUnit4.class),因此在理论上这应该始终与JUnit4运行器一起运行:
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));
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我的问题:
任何其他想法将是最受欢迎的.谢谢!
编辑(2015年1月26日上午11点40分CST):根据Grzesuav的建议,我采取了一个实施这个的方法@Rule,但目前仍然无法正常工作.这似乎是一条很有希望的道路,但目前还没有奏效.
编辑2(2015年1月26日下午12:15 CST):好的,现在它正在运作.
小智 2
https://github.com/junit-team/junit/wiki/假设-with-assume
ad 2) 自定义运行者可以不同地对待假设语句。要修复它,您应该编写自己的 Android 运行程序版本,并实现一种像本机 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/