You need to sign in to do that
Don't have an account?
System.NullPointerException: Attempt to de-reference a null object
I'm now testing by running 'Runtests' of the test class I created.
However, I'm now facing an error explained as follows.
I would like to know the reason of the error.
I appreciate if somebody could help me with the issue
(******** is an indication of abbreviation)
I wrote in the test class as follows;
@isTest
private class (test class name) {
static testMethod void myUnitTest() {
**************************************
**************************************
(class name) controller = new (classname) ();
controller.setIntervalFlg();
}
}
the 'class name' above is referenced to the
class to be tested below.
It seems like the error message indicates something wrong with the code written in the line of ' if(interval.equals('none')) ' below
public with sharing class (classname) {
****************
****************
****************
public String interval { get; set; }
public Boolean interval15Flg { get; set; }
public Boolean interval30Flg { get; set; }
public Boolean interval60Flg { get; set; }
public Boolean interval300Flg { get; set; }
public Boolean interval600Flg { get; set; }
public String nowDatetime { get; set; }
Integer count = 0;
public PageReference intervalCounter() {
count++;
setIntervalFlg();
refresh();
nowDatetime = Datetime.now().format('yyyy/MM/dd HH:mm:ss');
return null;
}
public Integer getCount() {
return count;
}
public void setIntervalFlg(){
if(interval.equals('none')) {
interval15Flg = false;
interval30Flg = false;
interval60Flg = false;
interval300Flg = false;
interval600Flg = false;
}
else if (interval.equals('15')) {
interval15Flg = true;
interval30Flg = false;
interval60Flg = false;
interval300Flg = false;
interval600Flg = false;
}
else if (interval.equals('30')) {
interval15Flg = false;
interval30Flg = true;
interval60Flg = false;
interval300Flg = false;
interval600Flg = false;
}
else if (interval.equals('60')) {
interval15Flg = false;
interval30Flg = false;
interval60Flg = true;
interval300Flg = false;
interval600Flg = false;
}
else if (interval.equals('300')) {
interval15Flg = false;
interval30Flg = false;
interval60Flg = false;
interval300Flg = true;
interval600Flg = false;
}
else if (interval.equals('600')) {
interval15Flg = false;
interval30Flg = false;
interval60Flg = false;
interval300Flg = false;
interval600Flg = true;
}
}
In that case, your test case should look something like this.
@isTest
private class (test class name) {
static testMethod void myUnitTest() {
**************************************
**************************************
(class name) controller = new (classname) ();
controller.Interval = 'none';
controller.setIntervalFlg();
controller.Interval = '15';
controller.setIntervalFlg();
controller.Interval = '30';
controller.setIntervalFlg();
controller.Interval = '60';
controller.setIntervalFlg();
controller.Interval = '300';
controller.setIntervalFlg();
controller.Interval = '600';
controller.setIntervalFlg();
}
}
Hope that helps.
Afzal
All Answers
I see the problem.
You may want to set some value to interval variable, before calling the setIntervalFlg method in your test case.
Your new test case should look something like this.
@isTest
private class (test class name) {
static testMethod void myUnitTest() {
**************************************
**************************************
(class name) controller = new (classname) ();
controller.Interval = 'none';
controller.setIntervalFlg();
}
}
Hope that helps.
Afzal
Dear Afzal
Thank you very much for your help.
It works.
May I ask you one more question relating to your advice?
I added one line according to your advice as follows.
controller.interval = 'none';
I tried adding others like
controller.interval = '15';
controller interval = '30';
controller.interval = '60';
controller.interval = '300';
controller.interval = '600';
However, 'None' and '600' were succeeded in the runtest.
Other 30,60,300 failed.
It seems like the last line, which is '600' in this case, succeeds except for 'none'.
If I delete controller.interval = '600', then 300 succeeds.
Do I need to add some codes to initialize previous ones before each interval?
Could it be possible to let me know how I should add those codes?
Mori
Dear Afzal
Please ignore the last mail I sent to you.
I'm a beginner in programming.
Please pardon me for asking you very fundamental questions.
Mori
In that case, your test case should look something like this.
@isTest
private class (test class name) {
static testMethod void myUnitTest() {
**************************************
**************************************
(class name) controller = new (classname) ();
controller.Interval = 'none';
controller.setIntervalFlg();
controller.Interval = '15';
controller.setIntervalFlg();
controller.Interval = '30';
controller.setIntervalFlg();
controller.Interval = '60';
controller.setIntervalFlg();
controller.Interval = '300';
controller.setIntervalFlg();
controller.Interval = '600';
controller.setIntervalFlg();
}
}
Hope that helps.
Afzal
Thank you again for helping me our of this problem
Mori