2013-12-17 22 views
5

我已經寫了簡單的TestCase的擴展單元測試失敗()不,我有以下幾點:Android的單元測試沒有報告與

public class MetricParserTests extends TestCase { 

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

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

    public void testFailure() { 
     fail("This needs to fail"); 
    } 
} 

當使用ant testadb shell am instrument我跑我的測試,我得到以下結果:

... [執行] OK(1個測試)...

我希望看到在命令行上是失敗的。

+0

我有同樣的問題。我可以看到AssertionFailedError在我逐行運行時拋出,但eclipse,ant和logcat都報告測試已通過? –

+0

我想你應該問自己的問題@ChrisNoldus – 2014-01-13 02:08:42

+0

爲什麼要複製它?很可能我們有完全相同的問題。 –

回答

1

我相信我知道問題是什麼。我能夠重現問題並解決問題。您使用的命令不會重建並重新將您的測試項目安裝到設備上。當您撥打ant test時,它只會執行已安裝在該設備上的測試。

你需要什麼叫是在您的測試項目目錄中的三個命令:

ant debug 
ant installd 
ant test 

然後所有的測試將是重建和重新安裝最新的測試將被執行。如果您沒有撥打debuginstalld,則您對測試所做的更改無法應用。

+0

這個答案對我沒有幫助 - 我看到Gregg已經接受了這個問題,但是讀到他的問題表明這不應該是正確的,因爲他的代碼只有一個測試並且正在執行。我的代碼只有5個測試,它們都應該都失敗了,所有5個都出現了通行證,清楚地表明最新的代碼在設備上(更不用說我曾嘗試刪除並安裝至少一次)。根據Dagon的建議,我將重新提出這個問題,並詳細介紹我的具體情況。 –

+1

@ChrisNoldus可以隨時開放一個新的問題,詳細描述你的問題,社區將盡力幫助你。 –

-1

testFailure()方法沒有@Test註解。那是對的嗎?

+1

不,Android使用JUnit3,所以沒有註釋。 – Gregg

0

我還沒有最近Android的測試經驗,但這裏是我發現......

您可以正常使用JUnit測試,如果你的代碼是完全從Android的脫鉤(見here 爲例)。這將運行在您的 JVM使用JUnit亞軍。但是,如果您嘗試在Android設備上運行這些測試(通過ant或命令行工具),那麼您需要創建一個完整的android測試項目(請參見here)。 爲了測試「在設備上」你的測試用例需要延長的Android測試類的一個像ActivityInstrumentationTestCase2<T> 並使用Dalvik虛擬機的InstrumentationTestRunner在Android設備上運行。 使用IDE或命令行工具創建測試項目應該爲您創建示例測試。

This blog post從上面的帖子的評論鏈接是一個很好的信息來源,因爲是Android Testing Fundamentals文檔。

+0

我不能說格雷格,但這個答案不能幫助我。我正在使用一個Android測試項目,並且我正在擴展一個android測試用例(在我的場景中,它是ApplicationTestCase )。我確實需要在Android環境中進行測試,因此JUnit本身不會有幫助。 –