2010-10-08 40 views
0

我正在編寫一個java類,它爲JUnit測試生成HTML表格報告並使用CSS進行可視化格式化。我有一個對齊單元格的問題,因爲生成的柱面數量是不可預測的,因爲其中一些列表示傳遞給可變參數函數的參數。因此在列中存在固有的不對齊。有什麼辦法通過CSS屬性或某些東西來對齊這些單元格嗎?我真的不想改變底層的Java代碼來改變這個美學問題。HTML自定義JUnit報告不均勻表格對齊

下面是一個示例表產生什麼會是這樣的:

http://lh5.ggpht.com/_N67DMbmmQMQ/TK6Q-Vlhd3I/AAAAAAAAAB8/JDFR1B5HX-k/JUnitReportExample.png

下面是表的HTML源(格式正確):

<html> 
    <head> 
     <style type="text/css"> 
      td 
      { 
       font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; 
       font-size: 1em; 
       border: 1px solid black; 
       padding: 3px 7px 2px 7px; 
      } 
     </style> 
    </head> 
    <body> 
     <table> 
      <tr> 
       <td> 
        <b>Method:</b> 
        <font color="blue" face="Verdana"> 
         testOne 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         1 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         1 
        </font> 
       </td> 
       <td> 
        <b>Result:</b> 
        <font color="green" face="Verdana"> 
         Passed 
        </font> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <b>Method:</b> 
        <font color="blue" face="Verdana"> 
         testTwo 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         BMW 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         Audi 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         Mercedes 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         Porsche 
        </font> 
       </td> 
       <td> 
        <b>Result:</b> 
        <font color="green" face="Verdana"> 
         Passed 
        </font> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <b>Method:</b> 
        <font color="blue" face="Verdana"> 
         testThree 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         21154423 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         2443 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         12121 
        </font> 
       </td> 
       <td> 
        <b>Result:</b> 
        <font color="green" face="Verdana"> 
         Passed 
        </font> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <b>Method:</b> 
        <font color="blue" face="Verdana"> 
         testFour 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         4.1222 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         2.0001 
        </font> 
       </td> 
       <td> 
        <b>Result:</b> 
        <font color="red" face="Verdana"> 
        Failed 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <b>Method:</b> 
        <font color="blue" face="Verdana"> 
         testFive 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         10 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         10 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         Kungsholmens Hamn 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         Melissa Horn 
        </font> 
       </td> 
       <td> 
        <b>Result:</b> 
        <font color="green" face="Verdana"> 
         Passed 
        </font> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <b>Method:</b> 
        <font color="blue" face="Verdana"> 
         testSix 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         Sweden 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         Sweden 
        </font> 
       </td> 
       <td> 
        <b>Result:</b> 
        <font color="green" face="Verdana"> 
         Passed 
        </font> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <b>Method:</b> 
        <font color="blue" face="Verdana"> 
         testSeven 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         Lisa Ekdahl 
        </font> 
       </td> 
       <td> 
        <b></b> 
        <font color="purple" face="Verdana"> 
         Lisa Ekdahl 
        </font> 
       </td> 
       <td> 
        <b>Result:</b> 
        <font color="green" face="Verdana"> 
         Passed 
        </font> 
       </td> 
      </tr> 
     </table> 
    </body> 
</html> 
</table> 
</body> 
</html> 
+0

任何瀏覽器的要求? – babtek 2010-10-08 04:15:21

+0

我希望它在至少IE和Chrome中正確渲染。 – TheWolf 2010-10-08 05:05:31

回答

2

我不認爲你將能夠用簡單的CSS。

你不想改變你的java代碼的審美問題,但問題是你的表真的不應該有不斷變化的列數。參數列應該只有一列,並有一些其他方法來分隔這些值。您可以在第二列中生成逗號分隔的參數列表。這樣,你總是會有3列,而且事情會更容易格式化。

如果您確實想將值保存在單獨的列中,則應在最後一個參數上使用colposan屬性。例如最後一個參數欄看起來是這樣的,在你的java字符串(或任何你用它來生成HTML)看有點像:

"<td colspan="+ (maxNumberOfColumns-currentColumnIndex) +">" 

我強烈建議你調整你的java代碼要做到這一點,因爲(使用javascript進行修改)更加痛苦(即使使用JQuery)。

+0

是的,我開始編寫邏輯,將字符串行存儲到緩衝區,然後遍歷它們全部添加空單元格以補償列數不均勻。似乎修改Java代碼是唯一的解決方案。感謝您的建議。 – TheWolf 2010-10-11 15:56:40