Yamanetoshi
yamanetoshi
以下でもごもごします
記録
とりあえず
Android Studio のバージョン上げます。check for update にて 1.2.2 になる模様。て何故か Canary という開発 current なサイトに飛ばされたので http://tools.android.com/download/studio/ から Stable を開きます。1.2.1.1 が安定版 current とのこと (2015.7.19 時点)。
いつ 1.0 にしたのかよく覚えていないんですがもう 1.2 なのか。
む
なかざんさんエントリに「2015.6.9追記:Android Studio 1.2 + Robolectric 3の組み合わせが良さそうなので、この記事をあまり鵜呑みにしないでください」という記載がありますね。ちょっとググッてみたところ、以下なエントリを見つけたのでなぞってみます。
ええと、なぞってみます。
Build variants
- Open ths “Build variants” tool window (on the left) and change the test artifact to “Unit tests”.
というソレ。ハードコピィがあるので何とかなりました。あとは src/test/java を作って云々で Android Studio から unittest が実行できます、ということなのかな。
とりあえずハロワの UI チェックする試験書いてみます。src/test/java の中に同じパケジを作って MainActivityTest というクラスを作成。で、ハロワな TextView は View のオブジェクトを取れるようにしておいて
<TextView
android:id="@+id/textview"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
で、試験が以下なのかどうか。
public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {
private MainActivity mActivity;
private TextView mHelloWorld;
public MainActivityTest() {
super(MainActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
mActivity = getActivity();
mHelloWorld = (TextView)mActivity.findViewById(R.id.textview);
}
public void testHelloWorld() {
assertEquals(mHelloWorld.getText(), mActivity.getString(R.string.hello_world));
}
}
実行してみたら setUp の中の findViewById でぬるぽでオチました。ちょっと微妙だったので簡単なテストを書いてみた。
public class MainActivityTest extends ActivityTestCase {
public void testHelloWorld() {
assertTrue(true);
}
}
これだとパスしてますね。とりあえずそもそも的なナニとして Android で UT なナニから復習します。
utils
というパケジを作ってその中に Utility というクラスを作り、以下なメソドを作成。
public static String getPriceString(int price) {
int size = (int)Math.log10((double)price) + 1;
if (size > 6) {
return "invalid size";
}
DecimalFormat nfCur;
nfCur = new DecimalFormat("\u00A5###,###");
return nfCur.format(price);
}
次に src/test/java 配下に同じ名前のパケジを作って UtilityTest というクラスを作ってテスト実行してみました。動いた。
public class UtilityTest {
@Test
public void testGetPriceString() {
final String expected = "¥1,234";
assertEquals(Utility.getPriceString(1234), expected);
}
}
instrumented unit testing
以下を build.gradle の defaultConfig に追加、なのかどうか。
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
で、再度 Activity の試験に戻ってるんですが、やはり getActivity が null を戻してて涙目。
問題点
二点。
- AndroidJUnit4 が解決できない
- getActivity メソドが null を戻す
引き続き問題解決対応の方向。しかし困った。
その後
以下な例外の問題解決ができぬまま。
java.lang.Exception: Custom runner class AndroidJUnit4 should have a public constuctor with signature AndroidJUnit4(Class testClass) <1 internal calls>
ここのサンプルコピペでも同じ現象。
blog comments powered by Disqus