You need to sign in to do that
Don't have an account?
Getting to 100 percent code coverage on my trailhead module “Write Negative Tests Unit”
I seem to be stuck on this trailhead module or write negative tests unit, while I have 93 percent code coverage, I can't seem to get the code coverage to hit 100 percent at the "returnValue" piece doesn't seem to hit.
My code is as follows.
Calculator Class
And my test class as follows
My code is as follows.
Calculator Class
public class Calculator { public class CalculatorException extends Exception{} public static Integer addition(Integer a, Integer b){ return a + b; } public static Integer subtraction(Integer a, Integer b){ return a - b; } public static Integer multiply(Integer a, Integer b){ if(b==0 || a==0){ throw new CalculatorException('It doesn\'t make sense to multiply by zero'); } return a * b; } public static Decimal divide(Integer numerator, Integer denominator){ if(denominator == 0){ throw new CalculatorException('you still can\'t divide by zero'); } Decimal returnValue = numerator / denominator; if(returnValue < 0){ throw new CalculatorException('Division returned a negative value.' + returnValue); } return returnValue; } }
And my test class as follows
@isTest public class Calculator_Tests { @isTest public static void addition() { Calculator.addition(1, 0); } @isTest public static void subtraction() { Calculator.subtraction(1, 0); } @isTest public static void divide_throws_exception_for_division_by_zero() { Boolean caught = false; try { Calculator.divide(1, 0); } catch (Calculator.CalculatorException e) { System.assertEquals('you still can\'t divide by zero', e.getMessage(), 'caught the right exception'); caught = true; } System.assert(caught, 'threw expected exception'); } @isTest public static void divide_throws_exception_for_division_by_two() { Boolean caught = true; try { Calculator.divide(1, 2); } catch (Calculator.CalculatorException e) { System.assertEquals('you still can\'t divide by zero', e.getMessage(), 'caught the right exception'); caught = true; } System.assert(caught, 'threw expected exception'); } @isTest public static void multiply_by_one() { Boolean caught = false; try { Calculator.multiply(1, 0); } catch (Calculator.CalculatorException e) { System.assertEquals('It doesn\'t make sense to multiply by zero', e.getMessage(), 'caught the right exception'); caught = true; } System.assert(caught, 'threw expected exception'); } @isTest public static void multiply_by_two() { Boolean caught = true; try { Calculator.multiply(1, 2); } catch (Calculator.CalculatorException e) { System.assertEquals('It doesn\'t make sense to multiply by zero', e.getMessage(), 'caught the right exception'); caught = true; } System.assert(caught, 'threw expected exception'); } }
Infact you can change that not accepting the negative value like this
and add another test method
I hope this will help.
All Answers
Infact you can change that not accepting the negative value like this
and add another test method
I hope this will help.
Now We are getting 93 % Code Coverage Only...Is there 100% Code coverage
@isTest static void testdivide_WithNegativevalue()
{
Boolean caught = true;
try{
Calculator.divide(-4,2);
}
catch(Calculator.CalculatorException e)
{
//Always write correct assertion
System.assertEquals('Division returned a negative value.', e.getMessage());
caught = true;
}
system.assert(caught,'threw expected exception');
}
I hope this will help you...
IPL Match Prediction (http://iplprediction2020x.in/)
Just completed the trailhead and thanks to the contributors, as the trailhead wasnt very good at explaining the approach.
You need to get the detail exact, so
if passing Calculator.divide(-2,2);
System.assertEquals('Division returned a negative value.-1', e.getMessage(),
'caught the right exception');
if passing Calculator.divide(-4,2);
System.assertEquals('Division returned a negative value.-2', e.getMessage(),
'caught the right exception');
IPL Match Prediction (http://www.iplmatchpredictionastrology.com/)
Let's know who won in IPL today (https://www.iplprediction2020.in/)
IPL Astrology(https://www.todayiplmatchprediction2020.in/)
@isTest
public class Calculator_Tests {
//positive addition
@isTest public static void additionTest()
{
Integer addition= Calculator.addition(6, 7);
system.assertEquals(addition,13);
}
//positive substraction
@isTest public static void substractionTest()
{
Integer substraction= Calculator.subtraction(12, 7);
system.assertEquals(substraction,5);
}
//positive Multiplication
@isTest public static void PositiveMultiplicationTest()
{
Integer multi= Calculator.multiply(12, 7);
system.assertEquals(multi,84);
}
//positive division
@isTest public static void DivisionTest()
{
Decimal div= Calculator.divide(12, 7);
system.assertNotEquals(div,0);
}
//multiplication by zero exceptional case
@isTest public static void multiplicationExceptionTest()
{
List<Boolean> exceptions = new List<Boolean>();
try{
Integer multi= Calculator.multiply(12, 0);
}
catch(Calculator.CalculatorException awe){
{
if(awe.getMessage().equalsIgnoreCase('It doesn\'t make sense to multiply by zero')){
exceptions.add(true);
}
}
system.assertNotEquals(null, exceptions, 'expected at least one exception to have occured');}
}
//Negative Division result exceptional case
@isTest public static void NegativeResultExceptionTest()
{
List<Boolean> exceptions = new List<Boolean>();
try{
Calculator.divide(-12, 3);
}
catch(Calculator.CalculatorException awe){
if(awe.getMessage().equalsIgnoreCase('Division returned a negative value.-4')){
exceptions.add(true);
}
}
system.assertNotEquals(null, exceptions, 'expected at least one exception to have occured');
}
//Division by zero exceptional case
@isTest public static void DivisionByZeroExceptionTest()
{
List<Boolean> exceptions = new List<Boolean>();
try{
Calculator.divide(12, 0);
}
catch(Calculator.CalculatorException awe){
{
if(awe.getMessage().equalsIgnoreCase('you still can\'t divide by zero')){
exceptions.add(true);
}
}
system.assertNotEquals(null, exceptions, 'expected at least one exception to have occured');}
}
}