2016-05-30 4 views
0

私はstady junitが欲しいです。いくつかのテストアプリを作成し、テストを試してみてください。私は単純なアクティビティを持っていますが、このアクティビティではメソッドcheckEditTextがあります。このメソッドはtrueまたはfalseを返します。これが私の活動です:どうしたの? Android JUnit

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
} 

public boolean checkEditText(int number) { 
     return number > 0 ? true : false; 

    } 

これはテストです:

package ac.junit2; 


import android.test.ActivityInstrumentationTestCase2; 

import org.junit.Assert; 

public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> { 

    public MainActivityTest() { 
     super(MainActivity.class); 
    } 

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

     MainActivity activity = getActivity(); 
     Assert.assertNotNull(activity); 
    } 



    public void testCheckNumber() { 
     MainActivity activity = getActivity(); 

     boolean action = activity.checkEditText(0); 
     assertTrue(action); 
    } 


} 

私はエラーがあります:0だから

return number > 0 ? true : false; 

0より大きくないので

java.lang.AssertionError 
    at org.junit.Assert.fail(Assert.java:86) 
    at org.junit.Assert.assertTrue(Assert.java:41) 
    at org.junit.Assert.assertNotNull(Assert.java:712) 
    at org.junit.Assert.assertNotNull(Assert.java:722) 
    at ac.junit2.MainActivityTest.setUp(MainActivityTest.java:26) 
    at junit.framework.TestCase.runBare(TestCase.java:139) 
    at junit.framework.TestResult$1.protect(TestResult.java:122) 
    at junit.framework.TestResult.runProtected(TestResult.java:142) 
    at junit.framework.TestResult.run(TestResult.java:125) 
    at junit.framework.TestCase.run(TestCase.java:129) 
    at junit.framework.TestSuite.runTest(TestSuite.java:252) 
    at junit.framework.TestSuite.run(TestSuite.java:247) 
    at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86) 
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137) 
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) 
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234) 
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 
+2

ええと、答えが示唆しているような編集テキストではありません。 'MainActivityTest.setUp'の' Assert.assertNotNull'はすでに失敗しています。私は 'getActivity()'がどのように動作するはずかは分かりませんが、あなたには何も得られていないようです。 – zapl

+0

私が疑問に思っているもう一つのことは、あなたのテストメソッドに '@ Test'アノテーションが必要ないのですか? Junitは 'testCheckNumber()'を呼び出さなければならないことをどのように知っていますか? – GhostCat

答えて

1

をnumberが0の場合はfalseを返します。

このテストでは、あなたは真を表明していますが、結果は偽です。

1

テストが失敗しました。引数が,,0より大きい場合を除き、falseを返すメソッドを定義しているので、​​の結果はfalseです。次に、結果がtrueであると主張しています。

+0

彼の質問にある例外は非常に明確です:失敗は 'setUp()'メソッドですでに発生しています。これは、 'getActivity()'呼び出しがnullを返すことを意味します。だからあなたの答えは現在の問題に対処していません。おそらく、彼の実際のテストメソッドは最初に呼び出されることはありません(または、 '@ Test'アノテーションが表示されます)? – GhostCat

+0

@Jägermeister - 良い点。もちろん、受け入れられた答えは同じ問題を抱えていますが、そうではありませんか? –

+0

しかし、彼はあなたの評判の半分未満の初心者です;-) – GhostCat

関連する問題