Intellij not shows test results in console - junit

Howto set the output in test console? When i run test by default the output is replaced by the summary of the test, and System.outs are lost.

In IDEA 12,13 and 14 (also maybe other versions), there is a button "Hide passed tests" and is pressed by default:
The console output is missing some of the printed strings (the last ones).
When you uncheck the button and click on the test:
Then the output is shown in the console.

I got it! There is an configuration option in bottom run panel, and by default "Track running test" is checked, when I unchecked it the output stays and is no more replaced by summary.

Another possibility is that your logging is maybe configured to be written to a file. If this is the case, you can uncheck the 'Save console output to file' option.

What version of IntelliJ are you using? Normally when running a unit test, you have a Run tab at the bottom of your application and you see appear your test logging (System.outs) in there...

If your test output disappear when the test finish to run (and failing),
Disable "Select First Failed test When Finished" in order to see all prints

In the 2016.x versions, you need to change so that your launch configuration has "Activate Tool Window" unchecked (at the bottom).

It's different for tests that failed and tests that works.
If no test fails you'll have to click the top level of all tests that ran you'll see the output.
If you click on any specific working test they'll be empty, even if they printed something.
If you click on any specific failing test they'll show the output from all previous tests, including the one that failed.

Related

How to stop/cancel a cucumber/ruby test when running from Sublime Text 3 (in Windows)?

I am able to launch a Cucumber/Ruby test from Sublime 3 in Windows by right clicking and choosing Ruby Test-Run Single Test.
Things brings up the Test Panel with the results, but how can I cancel this execution and stop it from keep on running?
I've tried: ctrl+z, ctrl+x, ctrl+c, ctrl+pause_break, ctrl+delete, esc, delete, pause_break, but the test keep on running and you need to wait until it's all done...
I was pressing those keys either in the Test Panel, the console, or the main screen with code.
If you know what I could try pls?

PHPstorm console input not working during debug sessions

I'm using a PHP script which expects user input from a command like fgets(STDIN). The problem is it no longer works in the newest version of PHPStorm (10).
The same works when I run it directly (without debugger enabled) and anything I enter in the console is sent to the script (on direct run).
But during a debug session, when I try to input text at the script's prompt, it does not go to the script. My best guess is that the new REPL feature is overriding user input in console during debugging. I say this because pressing the UP/DOWN arrows opens up a popup with all PHP function names.
It used to work correctly with last version.
How can I send user input to my PHP script with this new version? Am I missing something here?
I'm not sure if this is the same thing, but I was running into this same problem, and I was able to get it working by deselecting the "Use Console Input" checkbox in the PHPStorm Console.
John's answer is perfect.
I want to mention that the Use Console Input is a tiny icon in sidebar of the debug console. I provide you by this image

SpecFlow Exception, while running a test under WP8 project

Trying to run SpecFlow test I receive an error:
Missing resource DefaultSkeletonTemplates.sftemplates
I have:
The feature file
Feature class (generated code)
Feature step
All classes bound
What could be the problem?
I've run into this issue when the step isn't defined or can't be found.
You can run the test using statlight.exe on the command line to see SpecFlow's detailed output on the console.
In the feature file, right-click on the step and select "Go To Step Definition".
If a step can't be found, a message appears with the text "No matching step binding found for this step! Do you want to copy the step binding skeleton to the clipboard?"
Select Yes to copy the code for the step to the clipboard.
Then paste the code in a SpecFlow bound class and try running the scenario again.

Testing NativeProcess with FlexUnit

I've set up a FlexUnit test on my Adobe Air project and want to test some functionality that uses NativeProcess. When I run the test it gives this error:
Error: Error #3219: The NativeProcess could not be started. 'Not supported in current profile.'
This is because the FlexUnitApplication-app.xml doesn't have this line enabling NativeProcess:
<supportedProfiles>extendedDesktop</supportedProfiles>
The problem is that FlexUnitApplication-app.xml gets auto generated each time it builds without that line.
I've been able to get it to work by running the test using "Run all tests" from the FlexUnit Results window and letting it fail. Then I add the line to FlexUnitApplication-app.xml in bin-debug and running the tests again. If anything in the project changes I need to repeat these steps so this isn't ideal.
You need to add it to your launch profile: click on the little arrow next to the bug icon and select Debug Configurations (or select the project properties > run/debug settings)
Choose the launch configuration you want to edit on the left of the new dialog. In the "main" tab of this config, the last option is "Profile", you can switch between "desktop" and "extendedDesktop" there.

Save the console.log in Chrome to a file

Does anyone know of a way to save the console.log output in Chrome to a file? Or how to copy the text out of the console?
Say you are running a few hours of functional tests and you've got thousands of lines of console.log output in Chrome. How do you save it or export it?
Good news
Chrome dev tools now allows you to save the console output to a file natively
Open the console
Right-click
Select "save as.."
Chrome Developer instructions here.
I needed to do the same thing and this is the solution I found:
Enable logging from the command line using the flags:
--enable-logging --v=1
This logs everything Chrome does internally, but it also logs all the console.log() messages as well. The log file is called chrome_debug.log and is located in the User Data Directory which can be overridden by supplying --user-data-dir=PATH (more info here).
Filter the log file you get for lines with CONSOLE(\d+).
Note that console logs do not appear with --incognito.
I have found a great and easy way for this.
In the console - right click on the console logged object
Click on 'Store as global variable'
See the name of the new variable - e.g. it is variableName1
Type in the console: JSON.stringify(variableName1)
Copy the variable string content: e.g. {"a":1,"b":2,"c":3}
Go to some JSON online editor:
e.g. https://jsoneditoronline.org/
There is an open-source javascript plugin that does just that, but for any browser - debugout.js
Debugout.js records and save console.logs so your application can access them. Full disclosure, I wrote it. It formats different types appropriately, can handle nested objects and arrays, and can optionally put a timestamp next to each log. You can also toggle live-logging in one place, and without having to remove all your logging statements.
For better log file (without the Chrome-debug nonsense) use:
--enable-logging --log-level=0
instead of
--v=1 which is just too much info.
It will still provide the errors and warnings like you would typically see in the Chrome console.
update May 18, 2020: Actually, I think this is no longer true. I couldn't find the console messages within whatever this logging level is.
This may or may not be helpful but on Windows you can read the console log using Event Tracing for Windows
http://msdn.microsoft.com/en-us/library/ms751538.aspx
Our integration tests are run in .NET so I use this method to add the console log to our test output. I've made a sample console project to demonstrate here: https://github.com/jkells/chrome-trace
--enable-logging --v=1 doesn't seem to work on the latest version of Chrome.
For Google Chrome Version 84.0.4147.105 and higher,
just right click and click 'Save as' and 'Save'
then, txt file will be saved
A lot of good answers but why not just use JSON.stringify(your_variable) ? Then take the contents via copy and paste (remove outer quotes). I posted this same answer also at: How to save the output of a console.log(object) to a file?
There is another open-source tool which allows you to save all console.log output in a file on your server - JS LogFlush (plug!).
JS LogFlush is an integrated JavaScript logging solution which include:
cross-browser UI-less replacement of console.log - on client side.
log storage system - on server side.
Demo
If you're running an Apache server on your localhost (don't do this on a production server), you can also post the results to a script instead of writing it to console.
So instead of console.log, you can write:
JSONP('http://localhost/save.php', {fn: 'filename.txt', data: json});
Then save.php can do this
<?php
$fn = $_REQUEST['fn'];
$data = $_REQUEST['data'];
file_put_contents("path/$fn", $data);
Right-click directly on the logged value you want to copy
In the right-click menu, select "Store as global variable"
You'll see the value saved as something like "temp1" on the next line in the console
In the console, type copy(temp1) and hit return (replace temp1 with the variable name from the previous step). Now the logged value is copied to your clipboard.
Paste the values to wherever you want
This is especially good as an approach if you don't want to mess with changing flags/settings in Chrome and don't want to deal with JSON stringifying and parsing etc.
Update: I just found this explanation of what I suggested with images that's easier to follow https://scottwhittaker.net/chrome-devtools/2016/02/29/chrome-devtools-copy-object.html
These days it's very easy - right click any item displayed in the console log and select save as and save the whole log output to a file on your computer.
On Linux (at least) you can set CHROME_LOG_FILE in the environment to have chrome write a log of the Console activity to the named file each time it runs. The log is overwritten every time chrome starts. This way, if you have an automated session that runs chrome, you don't have a to change the way chrome is started, and the log is there after the session ends.
export CHROME_LOG_FILE=chrome.log
the other solutions in this thread weren't working on my mac. Here's a logger that saves a string representation intermittently using ajax. use it with console.save instead of console.log
var logFileString="";
var maxLogLength=1024*128;
console.save=function(){
var logArgs={};
for(var i=0; i<arguments.length; i++) logArgs['arg'+i]=arguments[i];
console.log(logArgs);
// keep a string representation of every log
logFileString+=JSON.stringify(logArgs,null,2)+'\n';
// save the string representation when it gets big
if(logFileString.length>maxLogLength){
// send a copy in case race conditions change it mid-save
saveLog(logFileString);
logFileString="";
}
};
depending on what you need, you can save that string or just console.log it and copy and paste. here's an ajax for you in case you want to save it:
function saveLog(data){
// do some ajax stuff with data.
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function(){
if (this.readyState == 4 && this.status == 200) {}
}
xhttp.open("POST", 'saveLog.php', true);
xhttp.send(data);
}
the saveLog.php should append the data to a log file somewhere. I didn't need that part so I'm not including it here. :)
https://www.google.com/search?q=php+append+to+log
This answer might seem specifically related, but specifically for Network Log, you can visit the following link.
The reason I've post this answer is because in my case, the console.log printed a long truncated text so I couldn't get the value from the console. I solved by getting the api response I was printing directly from the network log.
chrome://net-export/
There you may see a similar windows to this, just press the Start Logging to Disk button and that's it:
Create a batch file using below command and save it as ChromeDebug.bat in your desktop.
start chrome --enable-logging --v=1
Close all other Chrome tabs and windows.
Double click ChromeDebug.bat file which will open Chrome and a command prompt with Chrome icon in taskbar.
All the web application logs will be stored in below path.
Run the below path in Run command to open chrome log file
%LocalAppData%\Google\Chrome\User Data\chrome_debug.log