The whole point of using JUnit, or TestNG, or something of that kind for your tests is that you can have thousands of tests in your project, and automate the testing. Running the tests can be part of the build process, and you get some feedback as to how many of the tests have passed. This is absolutely essential when your project consists of more than just a small handful of classes.
Your idea about catching the error that assertEquals throws and reporting it to the console is not a good one. Primarily because it makes the test pass when the assertion fails. That means that whatever you're using to run your tests (for example, Jenkins) is reporting the wrong result. You'll see, for example, that 5000 out of 5000 tests pass, even if a whole lot of them contain assertions that fail. And suddenly your large suite of tests has very little value.
Moreover, that stack trace that you so carefully print is going to get lost, in a flood of output from all the various tests.
So the short answer is that your idea (1) is the correct thing to do. It's what everyone does. And it means that the results of your tests are reported appropriately. You should never write tests like your idea (2).
assertEqualsbelong to a unit test framework. So I'll delete my comments for clean purpose