In TestNG, assertions are used to verify whether the actual output matches the expected output, which helps in validating test conditions. TestNG provides two types of assertions: HardAssert
and SoftAssert
. Each has its own use case and behavior, depending on the level of strictness required for a test.
1. HardAssert in TestNG
HardAssert (often simply referred to as Assert
) is the default assertion type in TestNG. When a HardAssert
fails, it immediately halts the execution of the test method. This is useful when you want a test to stop at the point of failure without executing the remaining steps.
Example Usage of HardAssert
import org.testng.Assert;
import org.testng.annotations.Test;
public class HardAssertExample {
@Test
public void testHardAssert() {
System.out.println("Step 1: Start Test");
// Hard assertion, if this fails, the test stops here
Assert.assertEquals("Hello", "Hello", "Step 2: Checking if Hello equals Hello");
System.out.println("Step 3: This will execute if assertion passes");
// This will fail and stop the test
Assert.assertEquals(5, 10, "Step 4: This assertion will fail and stop further steps");
System.out.println("Step 5: This will not execute if assertion fails");
}
}
In this example:
- If an assertion fails, the test method will stop execution at that point.
- The
Assert.assertEquals(5, 10)
line will fail, causing TestNG to stop the test and skip any following steps (i.e., “Step 5”).
Use Cases for HardAssert
- Critical Checks: When a failure in an assertion means the rest of the test cannot proceed.
- Short Test Cases: For tests with fewer validation points where failing any one condition invalidates the test.
- Immediate Failure Logging: When you want to immediately know where the test fails without running remaining steps.
2. SoftAssert in TestNG
SoftAssert is more flexible than HardAssert. It allows the test to continue executing even if one or more assertions fail. All assertions are evaluated, and the results of each are logged. At the end of the test, TestNG will then mark the test as failed if any of the assertions failed.
To use SoftAssert
, you must explicitly call the assertAll()
method at the end of the test method. This method checks all assertions executed in that method and determines the overall test result.
Example Usage of SoftAssert
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;
public class SoftAssertExample {
@Test
public void testSoftAssert() {
SoftAssert softAssert = new SoftAssert();
System.out.println("Step 1: Start Test");
// Soft assertion, will not stop test execution if fails
softAssert.assertEquals("Hello", "Hello", "Step 2: Checking if Hello equals Hello");
System.out.println("Step 3: This will execute even if previous assertion fails");
// This will fail, but the test will continue
softAssert.assertEquals(5, 10, "Step 4: This assertion fails, but test continues");
System.out.println("Step 5: This will still execute");
// Must call assertAll() at the end to evaluate all soft assertions
softAssert.assertAll();
}
}
In this example:
- If
softAssert.assertEquals(5, 10)
fails, the test continues to execute the following steps. - The
assertAll()
method at the end will collect all assertion results. If any soft assertions failed, it will mark the test as failed.
Use Cases for SoftAssert
- Comprehensive Validation: When multiple validation points are independent, and you want to check all conditions in a single test.
- Detailed Error Logging: Soft assertions allow capturing all assertion failures within a test method, providing a detailed report at the end.
- Non-Critical Checks: For conditions that don’t necessarily prevent further execution if they fail (e.g., UI tests where multiple elements need verification).
3. Key Differences Between HardAssert and SoftAssert
Feature | HardAssert | SoftAssert |
---|---|---|
Execution Flow | Stops test execution immediately on failure | Continues executing test steps after failure |
Assertion Results | Marks test as failed immediately on failure | Collects all results, marks test at end if any assertion fails |
Error Logging | Limited, as it halts execution | Detailed report with all failed assertions |
Common Use Cases | Critical tests, initial checks | UI checks, multiple independent validations |
4. Important Points About Using SoftAssert
- Always Call
assertAll()
: TheassertAll()
method must be called at the end of a test method. If omitted, the test will pass even if there were failed assertions. - SoftAssert Instance: Each test method requires a new instance of
SoftAssert
. Do not share the same instance across multiple test methods. - Selective Use: Avoid overusing
SoftAssert
in scenarios where failures should immediately halt the test for accurate test outcomes.
Our Services: Your Path to Successful Testing Career
Are you looking to enhance your testing skills and boost your career? At Your Corporate Life, we provide tailored services for professionals like you to excel in the testing field. Here’s what we offer:
- Job Update Service: Get daily job updates on WhatsApp for Manual Testing, Automation Testing, ETL Testing, Developer, and DevOps roles with experience ranging from fresher to 12 years.
- Subscription Fee: ₹499/- for 1 Year
- Naukri Profile Optimization: Enhance your visibility to recruiters with our expert Naukri profile optimization.
- Fee: ₹999/-
- LinkedIn Profile Optimization: Boost your professional presence on LinkedIn with a profile that stands out.
- Fee: ₹999/-
- Mock Interviews: Get interview-ready with our mock interviews designed to simulate real scenarios.
- Fee: ₹499/- per interview
- Placement Assistance Service: Comprehensive support in job search and placement.
- Fee: ₹2999/-
- Resume and Cover Letter Writing: Tailor-made resumes and cover letters that get you noticed.
- Fee: Varies as per experience
Contact us today for more details and to give your career the boost it deserves: Click here to connect on WhatsApp.
By mastering assertions and leveraging our services, you can enhance your software testing expertise and advance in your career. Happy testing!