2012-01-04 40 views
9

Tôi đang viết một số kiểm tra cho mã Javascript và tôi cần phải đổ một số thông điệp trong quá trình biên dịch khi gặp phải lỗi.Tương đương với System.out.println() của Java trong Javascript là gì?

Có tương đương với Java System.out.println() trong Javascript không?

P.S.: Tôi cũng cần phải loại bỏ các câu lệnh gỡ lỗi trong khi thực hiện kiểm tra.

CẬP NHẬT

Tôi đang sử dụng một plugin maven trên một tập tin có chứa tất cả các test sáp nhập:

 <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.1</version> 
      <executions> 
       <execution> 
       <phase>test</phase> 
       <goals> 
        <goal>java</goal> 
       </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <mainClass>org.mozilla.javascript.tools.shell.Main</mainClass> 
       <arguments> 
        <argument>-opt</argument> 
        <argument>-1</argument> 
        <argument>${basedir}/src/main/webapp/html/js/test/test.js</argument> 
       </arguments> 
      </configuration> 
     </plugin> 

CẬP NHẬT II

tôi đã cố gắng console.log("..."), nhưng tôi nhận được:

js: "src/main/webapp/html/js/concat/tests_all.js", line 147: 
uncaught JavaScript runtime exception: ReferenceError: "console" is not defined 

Mã tôi đang thử nghiệm là một tập hợp các hàm (như trong thư viện). Tôi đang sử dụng QUnit.

Trả lời

17

Về cơ bản console.log("Put a message here.") nếu trình duyệt có bảng điều khiển hỗ trợ.

Một phương pháp gỡ lỗi điển hình được sử dụng cảnh báo, alert("Put a message here.")

RE: Cập nhật II

Điều này dường như có ý nghĩa, bạn đang cố gắng để tự động kiểm tra QUnit, từ những gì tôi đã đọc trên QUnit đây là bộ/thư viện thử nghiệm đơn vị trong trình duyệt. QUnit hy vọng sẽ chạy trong một trình duyệt và do đó hy vọng trình duyệt sẽ nhận ra tất cả các hàm JavaScript mà bạn đang gọi.

Dựa trên cấu hình Maven của bạn, có vẻ như bạn đang sử dụng Rhino để thực thi Javascript của mình tại dòng lệnh/thiết bị đầu cuối. Điều này sẽ không hoạt động để thử nghiệm các chi tiết cụ thể của trình duyệt, bạn có thể cần phải xem xét Selenium cho việc này. Nếu bạn không quan tâm đến việc kiểm tra JavaScript của mình trong trình duyệt nhưng chỉ kiểm tra JavaScript ở cấp dòng lệnh (vì lý do tôi không quen thuộc), có vẻ như Rhino nhận ra phương thức print() để đánh giá biểu thức và in chúng ra. Thanh toán this documentation.

Các liên kết này có thể bạn quan tâm.

QUnit and Automated Testing

JavaScript Unit Tests with QUnit

+2

Nếu trình duyệt không có 'giao diện điều khiển' thì đó là trình duyệt crappy (để gỡ lỗi). –

+3

@Rocket Tôi đồng ý, hy vọng hầu hết những người không còn tồn tại nhưng nó chắc chắn là một vấn đề trước đây. Hơn nữa những trình duyệt crappy đó là những trình duyệt bạn phải thực hiện để gỡ lỗi nhiều nhất! –

+2

Tôi biết IE sẽ không có đối tượng 'console' trừ khi bạn mở công cụ gỡ lỗi, sau đó nó sẽ thêm nó. Nhưng đó là bởi vì IE là ngu ngốc. –

2

console.log().

Chrome, Safari và IE 8+ đi kèm với bảng điều khiển tích hợp (như một phần của một bộ công cụ phát triển lớn hơn). Nếu bạn đang sử dụng Firefox, getfirebug.com.

+0

liên quan (rất nhiều): http://stackoverflow.com/search?q=javascript+console.log –

+0

Tôi đã thử các giải pháp đề xuất, nhưng nó đã không làm việc. Tôi đã cập nhật câu hỏi của mình. – JVerstry

0

Có không phải một, ít nhất, không trừ khi bạn đang sử dụng một "nhà phát triển" công cụ của một số loại trong trình duyệt của bạn, ví dụ Firebug trong Firefox hoặc công cụ Nhà phát triển trong Safari. Sau đó, bạn thường có thể sử dụng console.log.

Nếu tôi đang làm điều gì đó trong thiết bị iOS, tôi có thể thêm <div id="debug" /> và sau đó đăng nhập vào nó.

+2

Chiến lược tốt, các thiết bị iOS có giao diện điều khiển mặc dù bạn bật nó qua Cài đặt> Safari> Nâng cao> Bảng điều khiển gỡ lỗi –

+0

Đậu mát @ChrisWagner, tôi không biết điều đó! –

0

Bạn luôn có thể thêm lời nhắc cảnh báo() vào bất kỳ đâu trong một hàm. Đặc biệt hữu ích khi biết một chức năng có được gọi hay không, nếu một chức năng hoàn thành hoặc khi một hàm bị lỗi.

alert('start of function x'); 
alert('end of function y'); 
alert('about to call function a'); 
alert('returned from function b'); 

Bạn hiểu ý tưởng.

+0

Có, nó có thể hoạt động, nhưng khi chạy quá trình biên dịch nhiều lần, tôi sẽ phải đóng mỗi cảnh báo -> Một chút không thực tế đối với tôi ... – JVerstry

+0

right - Tôi có thể thấy nơi đó sẽ là một chút không thực tế.Tôi đã sử dụng FireBug một chút, có vẻ như nó có những gì bạn đang tìm kiếm http://getfirebug.com/logging – jamesTheProgrammer

3

Tôi tìm thấy một giải pháp:

print("My message here"); 
-1

Tôi cũng định hỏi cùng một câu hỏi. Nhưng từ những gì tôi đã học được từ codeacademy.com dưới đây mã là đủ để hiển thị đầu ra hoặc văn bản?

print("hello world") 
3

Tôi đang sử dụng Chrome và in() nghĩa đen in văn bản trên giấy. Đây là những gì làm việc cho tôi:

document.write("My message"); 
Các vấn đề liên quan