2012-08-15 82 views
0

如何在if語句中使用assertTrue和assertFalse?如果前面的聲明不起作用,就會發出語法錯誤,但它值得一試。我試圖讓它成爲一個字符串,並用value.equals()檢查值,但assert給出了一個錯誤,說你不能轉換爲字符串。assertTrue/assertFalse if語句

public class JNAWinRegTest extends TestCase { 

    public static void main(String[] args) { 

    try { assertEquals("Windows 7 Professional", Advapi32Util.registryGetStringValue(WinReg.HKEY_LOCAL_MACHINE, 
      "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", "ProductName")); 
     if(True)){ 
      System.out.println("True"); 
     }else{ 
      if(False)){ 
       System.out.println("False");  
      } 
     } 
    } catch (IllegalArgumentException e) { 
       e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
       e.printStackTrace(); 
    } catch (InvocationTargetException e) { 
       e.printStackTrace(); 
      }            
     } 
    } 
+0

所有的'assert ...()'方法都有返回類型'void',所以它們不能用在'if'語句中。 – Keppil 2012-08-15 16:14:39

+0

你想達到什麼目的? – 2012-08-15 16:14:42

回答

1

您只要致電assertEquals(expected, actual) - 如果expected.equals(actual),測試繼續到下一行(當它到達最後一行通過),如果條件爲假,則測試失敗。

不需要額外的if/else。

+0

是的。而當它失敗時,它會根據這個javadoc拋出AssertionFailedError http://www.junit.org/junit/javadoc/3.8.1/junit/framework/Assert.html(我假設你使用的是junit3的TestCase) – 2012-08-15 16:24:41

+0

之所以這樣if語句將根據答案運行命令。喜歡爲win 7運行此修復程序或修復win xp。也許我應該使用別的東西......? – jerhynsoen 2012-08-15 16:32:17

+0

只有當您在'assertEquals'中測試的條件爲真時,'assertEquals'後面的語句纔會被執行。如果不是,'assertEquals'會拋出異常。 – assylias 2012-08-15 16:33:52