Is it a good practice to use a static variable in a Test Class and use that in the actual class instead of Test.isRunningTest()? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) 2019 Moderator Election Q&A - Questionnaire 2019 Community Moderator Election ResultsAssistance with a Test Class to increase code coverageCompilation error with a unit testError: Compile Error: Illegal assignment from String to Booleanschema.getglobaldescribe needs test classWhy is this test giving 0% coverage?Test class for the zenkraft process classI am not able to cover the specific code in Apex classHow to cover global class and method in test classHow can I reference a trigger's method and/or variable from a test class?Test Class: Unable to assert enqueueJob

Right-skewed distribution with mean equals to mode?

Gastric acid as a weapon

When is phishing education going too far?

What happens to sewage if there is no river near by?

If a contract sometimes uses the wrong name, is it still valid?

Do I really need recursive chmod to restrict access to a folder?

IndentationError when pasting code in Python 3 interpreter mode

How widely used is the term Treppenwitz? Is it something that most Germans know?

What makes black pepper strong or mild?

What are 'alternative tunings' of a guitar and why would you use them? Doesn't it make it more difficult to play?

Stars Make Stars

Did Kevin spill real chili?

Letter Boxed validator

Antler Helmet: Can it work?

macOS-like app switching in Plasma 5

Do you forfeit tax refunds/credits if you aren't required to and don't file by April 15?

What does '1 unit of lemon juice' mean in a grandma's drink recipe?

Are variable time comparisons always a security risk in cryptography code?

Should I use Javascript Classes or Apex Classes in Lightning Web Components?

Is there a documented rationale why the House Ways and Means chairman can demand tax info?

Should gear shift center itself while in neutral?

When to stop saving and start investing?

What is a Meta algorithm?

ListPlot join points by nearest neighbor rather than order



Is it a good practice to use a static variable in a Test Class and use that in the actual class instead of Test.isRunningTest()?



Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
2019 Moderator Election Q&A - Questionnaire
2019 Community Moderator Election ResultsAssistance with a Test Class to increase code coverageCompilation error with a unit testError: Compile Error: Illegal assignment from String to Booleanschema.getglobaldescribe needs test classWhy is this test giving 0% coverage?Test class for the zenkraft process classI am not able to cover the specific code in Apex classHow to cover global class and method in test classHow can I reference a trigger's method and/or variable from a test class?Test Class: Unable to assert enqueueJob



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








1















I've read about using a static variable from a class in the test class but I'm wondering if this is legal enough to do.



@isTest
public class myTestClass
public static Boolean mySwitch = false;
public static testMethod void myTestMethod1()
// code //

public static testMethod void myTestMethod2()
mySwitch = true;
// code //



public class actualClass
public void method1()
if(Test.isRunningTest)
//always true if its hitting from a test class.
else if(Test.isRunningTest && myTestClass.mySwitch)
//do something from myTestMethod2












share|improve this question







New contributor




Apz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.















  • 2





    What code/why are you trying to gate in test context? That's something one generally ought to do only if one really has to and has run out of other tools, in my opinion.

    – David Reed
    Apr 11 at 22:26











  • I'm sorry but can't share my code here. I can explain why am trying to do this, let's say there is an if condition which can't be made true from a test class but can be done using Test.isRunningTest() in actual class. What this does now is that, it will always get into this if condition but not the next if-else conditions. My bad if this is confusing.

    – Apz
    Apr 11 at 22:35

















1















I've read about using a static variable from a class in the test class but I'm wondering if this is legal enough to do.



@isTest
public class myTestClass
public static Boolean mySwitch = false;
public static testMethod void myTestMethod1()
// code //

public static testMethod void myTestMethod2()
mySwitch = true;
// code //



public class actualClass
public void method1()
if(Test.isRunningTest)
//always true if its hitting from a test class.
else if(Test.isRunningTest && myTestClass.mySwitch)
//do something from myTestMethod2












share|improve this question







New contributor




Apz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.















  • 2





    What code/why are you trying to gate in test context? That's something one generally ought to do only if one really has to and has run out of other tools, in my opinion.

    – David Reed
    Apr 11 at 22:26











  • I'm sorry but can't share my code here. I can explain why am trying to do this, let's say there is an if condition which can't be made true from a test class but can be done using Test.isRunningTest() in actual class. What this does now is that, it will always get into this if condition but not the next if-else conditions. My bad if this is confusing.

    – Apz
    Apr 11 at 22:35













1












1








1


0






I've read about using a static variable from a class in the test class but I'm wondering if this is legal enough to do.



@isTest
public class myTestClass
public static Boolean mySwitch = false;
public static testMethod void myTestMethod1()
// code //

public static testMethod void myTestMethod2()
mySwitch = true;
// code //



public class actualClass
public void method1()
if(Test.isRunningTest)
//always true if its hitting from a test class.
else if(Test.isRunningTest && myTestClass.mySwitch)
//do something from myTestMethod2












share|improve this question







New contributor




Apz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












I've read about using a static variable from a class in the test class but I'm wondering if this is legal enough to do.



@isTest
public class myTestClass
public static Boolean mySwitch = false;
public static testMethod void myTestMethod1()
// code //

public static testMethod void myTestMethod2()
mySwitch = true;
// code //



public class actualClass
public void method1()
if(Test.isRunningTest)
//always true if its hitting from a test class.
else if(Test.isRunningTest && myTestClass.mySwitch)
//do something from myTestMethod2









apex unit-test code-coverage






share|improve this question







New contributor




Apz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question







New contributor




Apz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question






New contributor




Apz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked Apr 11 at 22:21









ApzApz

61




61




New contributor




Apz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Apz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Apz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







  • 2





    What code/why are you trying to gate in test context? That's something one generally ought to do only if one really has to and has run out of other tools, in my opinion.

    – David Reed
    Apr 11 at 22:26











  • I'm sorry but can't share my code here. I can explain why am trying to do this, let's say there is an if condition which can't be made true from a test class but can be done using Test.isRunningTest() in actual class. What this does now is that, it will always get into this if condition but not the next if-else conditions. My bad if this is confusing.

    – Apz
    Apr 11 at 22:35












  • 2





    What code/why are you trying to gate in test context? That's something one generally ought to do only if one really has to and has run out of other tools, in my opinion.

    – David Reed
    Apr 11 at 22:26











  • I'm sorry but can't share my code here. I can explain why am trying to do this, let's say there is an if condition which can't be made true from a test class but can be done using Test.isRunningTest() in actual class. What this does now is that, it will always get into this if condition but not the next if-else conditions. My bad if this is confusing.

    – Apz
    Apr 11 at 22:35







2




2





What code/why are you trying to gate in test context? That's something one generally ought to do only if one really has to and has run out of other tools, in my opinion.

– David Reed
Apr 11 at 22:26





What code/why are you trying to gate in test context? That's something one generally ought to do only if one really has to and has run out of other tools, in my opinion.

– David Reed
Apr 11 at 22:26













I'm sorry but can't share my code here. I can explain why am trying to do this, let's say there is an if condition which can't be made true from a test class but can be done using Test.isRunningTest() in actual class. What this does now is that, it will always get into this if condition but not the next if-else conditions. My bad if this is confusing.

– Apz
Apr 11 at 22:35





I'm sorry but can't share my code here. I can explain why am trying to do this, let's say there is an if condition which can't be made true from a test class but can be done using Test.isRunningTest() in actual class. What this does now is that, it will always get into this if condition but not the next if-else conditions. My bad if this is confusing.

– Apz
Apr 11 at 22:35










2 Answers
2






active

oldest

votes


















3














You cannot reference a test class from a production class. You have the pattern reversed on where the Boolean flag should be.



You should avoid code which runs only out of a test context wherever possible. There are a few exceptions, such as:



  • Disabling a trigger framework to save on run times if they become prohibitive

  • Disabling batch chaining or other aspects of asynchronous processing

In these cases, you still should not use Test.isRunningTest() (at least according to our coding guideline where I work). Instead, you should use a @TestVisible flag in your production code.



public with sharing class MyClass

@TestVisible static Boolean shouldDoStuff = true;
public static void doStuff()

if (!shouldDoStuff) return;

// actual logic

public static void doNonGatedStuff()

doStuff();

// other logic


@IsTest class MyClass

@IsTest static void testDoStuff()

MyClass.shouldDoStuff = false;

// rest of test




Sometimes you will see this logic reversed. For example our typical flag for trigger handlers is called bypassTrigger, which would obviously default to false. You set it to true before inserting some records for setup, then bookend it back to false so that any further operations will still run the trigger.






share|improve this answer

























  • P.S. You didn't actually answer the question of "if this is legal?"

    – sfdcfox
    Apr 11 at 22:46











  • Because the way it was written wouldn't work, I simply showed how it can be done.

    – Adrian Larson
    Apr 11 at 22:50











  • Thanks for the response. I was actually able to use that static Boolean flag (from Test class) in my actual class, in order to get into a scope and looks like it worked. Do you think am missing something? The procedure that you showed is perfect but I just don't want to make any changes to the prod class since am just supposed to get the coverage up. That's the main reason for this question. Thanks again.

    – Apz
    Apr 12 at 3:14











  • It shouldn't work.

    – Adrian Larson
    Apr 12 at 3:22











  • So you're saying 'myTestClass.mySwitch' will throw an error if it's used outside the test context?

    – Apz
    Apr 12 at 3:24


















0














No, it is not valid. You cannot access any variables or methods inside a class marked @isTest outside of a test context. Instead, you need to place the static variable inside the actual class, then modify it in the test class:



@isTest
public class myTestClass
public static testMethod void myTestMethod1()
// code //

public static testMethod void myTestMethod2()
actualClass.mySwitch = true;
// code //



public class actualClass
@TestVisible static Boolean mySwitch = false;
public void method2()
if(mySwitch)
//do something from myTestMethod2





You can use @TestVisible to prevent accessing the variable outside of testing context.






share|improve this answer

























  • Thanks for the response. I was able to use a static variable from a test class in a prod class. Is this something which is frowned upon or is just NOT allowed? If it's the latter then it should thrown an error before saving, right? It ran successfully and in fact got what I was hoping for.

    – Apz
    Apr 12 at 3:21











  • @Apz No, it shouldn't work. I tried this and got a compilation error.

    – sfdcfox
    Apr 12 at 3:23











  • Sorry to bug but I checked it in my developer org and sandbox, it works fine for me.

    – Apz
    Apr 12 at 3:43











  • @Apz Not sure how you managed to do it--it is not allowed. Do not try to do it.

    – sfdcfox
    Apr 12 at 3:48











Your Answer








StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "459"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);






Apz is a new contributor. Be nice, and check out our Code of Conduct.









draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f257558%2fis-it-a-good-practice-to-use-a-static-variable-in-a-test-class-and-use-that-in-t%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























2 Answers
2






active

oldest

votes








2 Answers
2






active

oldest

votes









active

oldest

votes






active

oldest

votes









3














You cannot reference a test class from a production class. You have the pattern reversed on where the Boolean flag should be.



You should avoid code which runs only out of a test context wherever possible. There are a few exceptions, such as:



  • Disabling a trigger framework to save on run times if they become prohibitive

  • Disabling batch chaining or other aspects of asynchronous processing

In these cases, you still should not use Test.isRunningTest() (at least according to our coding guideline where I work). Instead, you should use a @TestVisible flag in your production code.



public with sharing class MyClass

@TestVisible static Boolean shouldDoStuff = true;
public static void doStuff()

if (!shouldDoStuff) return;

// actual logic

public static void doNonGatedStuff()

doStuff();

// other logic


@IsTest class MyClass

@IsTest static void testDoStuff()

MyClass.shouldDoStuff = false;

// rest of test




Sometimes you will see this logic reversed. For example our typical flag for trigger handlers is called bypassTrigger, which would obviously default to false. You set it to true before inserting some records for setup, then bookend it back to false so that any further operations will still run the trigger.






share|improve this answer

























  • P.S. You didn't actually answer the question of "if this is legal?"

    – sfdcfox
    Apr 11 at 22:46











  • Because the way it was written wouldn't work, I simply showed how it can be done.

    – Adrian Larson
    Apr 11 at 22:50











  • Thanks for the response. I was actually able to use that static Boolean flag (from Test class) in my actual class, in order to get into a scope and looks like it worked. Do you think am missing something? The procedure that you showed is perfect but I just don't want to make any changes to the prod class since am just supposed to get the coverage up. That's the main reason for this question. Thanks again.

    – Apz
    Apr 12 at 3:14











  • It shouldn't work.

    – Adrian Larson
    Apr 12 at 3:22











  • So you're saying 'myTestClass.mySwitch' will throw an error if it's used outside the test context?

    – Apz
    Apr 12 at 3:24















3














You cannot reference a test class from a production class. You have the pattern reversed on where the Boolean flag should be.



You should avoid code which runs only out of a test context wherever possible. There are a few exceptions, such as:



  • Disabling a trigger framework to save on run times if they become prohibitive

  • Disabling batch chaining or other aspects of asynchronous processing

In these cases, you still should not use Test.isRunningTest() (at least according to our coding guideline where I work). Instead, you should use a @TestVisible flag in your production code.



public with sharing class MyClass

@TestVisible static Boolean shouldDoStuff = true;
public static void doStuff()

if (!shouldDoStuff) return;

// actual logic

public static void doNonGatedStuff()

doStuff();

// other logic


@IsTest class MyClass

@IsTest static void testDoStuff()

MyClass.shouldDoStuff = false;

// rest of test




Sometimes you will see this logic reversed. For example our typical flag for trigger handlers is called bypassTrigger, which would obviously default to false. You set it to true before inserting some records for setup, then bookend it back to false so that any further operations will still run the trigger.






share|improve this answer

























  • P.S. You didn't actually answer the question of "if this is legal?"

    – sfdcfox
    Apr 11 at 22:46











  • Because the way it was written wouldn't work, I simply showed how it can be done.

    – Adrian Larson
    Apr 11 at 22:50











  • Thanks for the response. I was actually able to use that static Boolean flag (from Test class) in my actual class, in order to get into a scope and looks like it worked. Do you think am missing something? The procedure that you showed is perfect but I just don't want to make any changes to the prod class since am just supposed to get the coverage up. That's the main reason for this question. Thanks again.

    – Apz
    Apr 12 at 3:14











  • It shouldn't work.

    – Adrian Larson
    Apr 12 at 3:22











  • So you're saying 'myTestClass.mySwitch' will throw an error if it's used outside the test context?

    – Apz
    Apr 12 at 3:24













3












3








3







You cannot reference a test class from a production class. You have the pattern reversed on where the Boolean flag should be.



You should avoid code which runs only out of a test context wherever possible. There are a few exceptions, such as:



  • Disabling a trigger framework to save on run times if they become prohibitive

  • Disabling batch chaining or other aspects of asynchronous processing

In these cases, you still should not use Test.isRunningTest() (at least according to our coding guideline where I work). Instead, you should use a @TestVisible flag in your production code.



public with sharing class MyClass

@TestVisible static Boolean shouldDoStuff = true;
public static void doStuff()

if (!shouldDoStuff) return;

// actual logic

public static void doNonGatedStuff()

doStuff();

// other logic


@IsTest class MyClass

@IsTest static void testDoStuff()

MyClass.shouldDoStuff = false;

// rest of test




Sometimes you will see this logic reversed. For example our typical flag for trigger handlers is called bypassTrigger, which would obviously default to false. You set it to true before inserting some records for setup, then bookend it back to false so that any further operations will still run the trigger.






share|improve this answer















You cannot reference a test class from a production class. You have the pattern reversed on where the Boolean flag should be.



You should avoid code which runs only out of a test context wherever possible. There are a few exceptions, such as:



  • Disabling a trigger framework to save on run times if they become prohibitive

  • Disabling batch chaining or other aspects of asynchronous processing

In these cases, you still should not use Test.isRunningTest() (at least according to our coding guideline where I work). Instead, you should use a @TestVisible flag in your production code.



public with sharing class MyClass

@TestVisible static Boolean shouldDoStuff = true;
public static void doStuff()

if (!shouldDoStuff) return;

// actual logic

public static void doNonGatedStuff()

doStuff();

// other logic


@IsTest class MyClass

@IsTest static void testDoStuff()

MyClass.shouldDoStuff = false;

// rest of test




Sometimes you will see this logic reversed. For example our typical flag for trigger handlers is called bypassTrigger, which would obviously default to false. You set it to true before inserting some records for setup, then bookend it back to false so that any further operations will still run the trigger.







share|improve this answer














share|improve this answer



share|improve this answer








edited Apr 11 at 22:58

























answered Apr 11 at 22:44









Adrian LarsonAdrian Larson

110k19121257




110k19121257












  • P.S. You didn't actually answer the question of "if this is legal?"

    – sfdcfox
    Apr 11 at 22:46











  • Because the way it was written wouldn't work, I simply showed how it can be done.

    – Adrian Larson
    Apr 11 at 22:50











  • Thanks for the response. I was actually able to use that static Boolean flag (from Test class) in my actual class, in order to get into a scope and looks like it worked. Do you think am missing something? The procedure that you showed is perfect but I just don't want to make any changes to the prod class since am just supposed to get the coverage up. That's the main reason for this question. Thanks again.

    – Apz
    Apr 12 at 3:14











  • It shouldn't work.

    – Adrian Larson
    Apr 12 at 3:22











  • So you're saying 'myTestClass.mySwitch' will throw an error if it's used outside the test context?

    – Apz
    Apr 12 at 3:24

















  • P.S. You didn't actually answer the question of "if this is legal?"

    – sfdcfox
    Apr 11 at 22:46











  • Because the way it was written wouldn't work, I simply showed how it can be done.

    – Adrian Larson
    Apr 11 at 22:50











  • Thanks for the response. I was actually able to use that static Boolean flag (from Test class) in my actual class, in order to get into a scope and looks like it worked. Do you think am missing something? The procedure that you showed is perfect but I just don't want to make any changes to the prod class since am just supposed to get the coverage up. That's the main reason for this question. Thanks again.

    – Apz
    Apr 12 at 3:14











  • It shouldn't work.

    – Adrian Larson
    Apr 12 at 3:22











  • So you're saying 'myTestClass.mySwitch' will throw an error if it's used outside the test context?

    – Apz
    Apr 12 at 3:24
















P.S. You didn't actually answer the question of "if this is legal?"

– sfdcfox
Apr 11 at 22:46





P.S. You didn't actually answer the question of "if this is legal?"

– sfdcfox
Apr 11 at 22:46













Because the way it was written wouldn't work, I simply showed how it can be done.

– Adrian Larson
Apr 11 at 22:50





Because the way it was written wouldn't work, I simply showed how it can be done.

– Adrian Larson
Apr 11 at 22:50













Thanks for the response. I was actually able to use that static Boolean flag (from Test class) in my actual class, in order to get into a scope and looks like it worked. Do you think am missing something? The procedure that you showed is perfect but I just don't want to make any changes to the prod class since am just supposed to get the coverage up. That's the main reason for this question. Thanks again.

– Apz
Apr 12 at 3:14





Thanks for the response. I was actually able to use that static Boolean flag (from Test class) in my actual class, in order to get into a scope and looks like it worked. Do you think am missing something? The procedure that you showed is perfect but I just don't want to make any changes to the prod class since am just supposed to get the coverage up. That's the main reason for this question. Thanks again.

– Apz
Apr 12 at 3:14













It shouldn't work.

– Adrian Larson
Apr 12 at 3:22





It shouldn't work.

– Adrian Larson
Apr 12 at 3:22













So you're saying 'myTestClass.mySwitch' will throw an error if it's used outside the test context?

– Apz
Apr 12 at 3:24





So you're saying 'myTestClass.mySwitch' will throw an error if it's used outside the test context?

– Apz
Apr 12 at 3:24













0














No, it is not valid. You cannot access any variables or methods inside a class marked @isTest outside of a test context. Instead, you need to place the static variable inside the actual class, then modify it in the test class:



@isTest
public class myTestClass
public static testMethod void myTestMethod1()
// code //

public static testMethod void myTestMethod2()
actualClass.mySwitch = true;
// code //



public class actualClass
@TestVisible static Boolean mySwitch = false;
public void method2()
if(mySwitch)
//do something from myTestMethod2





You can use @TestVisible to prevent accessing the variable outside of testing context.






share|improve this answer

























  • Thanks for the response. I was able to use a static variable from a test class in a prod class. Is this something which is frowned upon or is just NOT allowed? If it's the latter then it should thrown an error before saving, right? It ran successfully and in fact got what I was hoping for.

    – Apz
    Apr 12 at 3:21











  • @Apz No, it shouldn't work. I tried this and got a compilation error.

    – sfdcfox
    Apr 12 at 3:23











  • Sorry to bug but I checked it in my developer org and sandbox, it works fine for me.

    – Apz
    Apr 12 at 3:43











  • @Apz Not sure how you managed to do it--it is not allowed. Do not try to do it.

    – sfdcfox
    Apr 12 at 3:48















0














No, it is not valid. You cannot access any variables or methods inside a class marked @isTest outside of a test context. Instead, you need to place the static variable inside the actual class, then modify it in the test class:



@isTest
public class myTestClass
public static testMethod void myTestMethod1()
// code //

public static testMethod void myTestMethod2()
actualClass.mySwitch = true;
// code //



public class actualClass
@TestVisible static Boolean mySwitch = false;
public void method2()
if(mySwitch)
//do something from myTestMethod2





You can use @TestVisible to prevent accessing the variable outside of testing context.






share|improve this answer

























  • Thanks for the response. I was able to use a static variable from a test class in a prod class. Is this something which is frowned upon or is just NOT allowed? If it's the latter then it should thrown an error before saving, right? It ran successfully and in fact got what I was hoping for.

    – Apz
    Apr 12 at 3:21











  • @Apz No, it shouldn't work. I tried this and got a compilation error.

    – sfdcfox
    Apr 12 at 3:23











  • Sorry to bug but I checked it in my developer org and sandbox, it works fine for me.

    – Apz
    Apr 12 at 3:43











  • @Apz Not sure how you managed to do it--it is not allowed. Do not try to do it.

    – sfdcfox
    Apr 12 at 3:48













0












0








0







No, it is not valid. You cannot access any variables or methods inside a class marked @isTest outside of a test context. Instead, you need to place the static variable inside the actual class, then modify it in the test class:



@isTest
public class myTestClass
public static testMethod void myTestMethod1()
// code //

public static testMethod void myTestMethod2()
actualClass.mySwitch = true;
// code //



public class actualClass
@TestVisible static Boolean mySwitch = false;
public void method2()
if(mySwitch)
//do something from myTestMethod2





You can use @TestVisible to prevent accessing the variable outside of testing context.






share|improve this answer















No, it is not valid. You cannot access any variables or methods inside a class marked @isTest outside of a test context. Instead, you need to place the static variable inside the actual class, then modify it in the test class:



@isTest
public class myTestClass
public static testMethod void myTestMethod1()
// code //

public static testMethod void myTestMethod2()
actualClass.mySwitch = true;
// code //



public class actualClass
@TestVisible static Boolean mySwitch = false;
public void method2()
if(mySwitch)
//do something from myTestMethod2





You can use @TestVisible to prevent accessing the variable outside of testing context.







share|improve this answer














share|improve this answer



share|improve this answer








edited Apr 11 at 22:53

























answered Apr 11 at 22:44









sfdcfoxsfdcfox

265k13212459




265k13212459












  • Thanks for the response. I was able to use a static variable from a test class in a prod class. Is this something which is frowned upon or is just NOT allowed? If it's the latter then it should thrown an error before saving, right? It ran successfully and in fact got what I was hoping for.

    – Apz
    Apr 12 at 3:21











  • @Apz No, it shouldn't work. I tried this and got a compilation error.

    – sfdcfox
    Apr 12 at 3:23











  • Sorry to bug but I checked it in my developer org and sandbox, it works fine for me.

    – Apz
    Apr 12 at 3:43











  • @Apz Not sure how you managed to do it--it is not allowed. Do not try to do it.

    – sfdcfox
    Apr 12 at 3:48

















  • Thanks for the response. I was able to use a static variable from a test class in a prod class. Is this something which is frowned upon or is just NOT allowed? If it's the latter then it should thrown an error before saving, right? It ran successfully and in fact got what I was hoping for.

    – Apz
    Apr 12 at 3:21











  • @Apz No, it shouldn't work. I tried this and got a compilation error.

    – sfdcfox
    Apr 12 at 3:23











  • Sorry to bug but I checked it in my developer org and sandbox, it works fine for me.

    – Apz
    Apr 12 at 3:43











  • @Apz Not sure how you managed to do it--it is not allowed. Do not try to do it.

    – sfdcfox
    Apr 12 at 3:48
















Thanks for the response. I was able to use a static variable from a test class in a prod class. Is this something which is frowned upon or is just NOT allowed? If it's the latter then it should thrown an error before saving, right? It ran successfully and in fact got what I was hoping for.

– Apz
Apr 12 at 3:21





Thanks for the response. I was able to use a static variable from a test class in a prod class. Is this something which is frowned upon or is just NOT allowed? If it's the latter then it should thrown an error before saving, right? It ran successfully and in fact got what I was hoping for.

– Apz
Apr 12 at 3:21













@Apz No, it shouldn't work. I tried this and got a compilation error.

– sfdcfox
Apr 12 at 3:23





@Apz No, it shouldn't work. I tried this and got a compilation error.

– sfdcfox
Apr 12 at 3:23













Sorry to bug but I checked it in my developer org and sandbox, it works fine for me.

– Apz
Apr 12 at 3:43





Sorry to bug but I checked it in my developer org and sandbox, it works fine for me.

– Apz
Apr 12 at 3:43













@Apz Not sure how you managed to do it--it is not allowed. Do not try to do it.

– sfdcfox
Apr 12 at 3:48





@Apz Not sure how you managed to do it--it is not allowed. Do not try to do it.

– sfdcfox
Apr 12 at 3:48










Apz is a new contributor. Be nice, and check out our Code of Conduct.









draft saved

draft discarded


















Apz is a new contributor. Be nice, and check out our Code of Conduct.












Apz is a new contributor. Be nice, and check out our Code of Conduct.











Apz is a new contributor. Be nice, and check out our Code of Conduct.














Thanks for contributing an answer to Salesforce Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f257558%2fis-it-a-good-practice-to-use-a-static-variable-in-a-test-class-and-use-that-in-t%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Distance measures on a map of a game The 2019 Stack Overflow Developer Survey Results Are Inmin distance in a graphShortest distance path on contour plotHow to plot a tilted map?Finding points outside of a diskDelaunay link distanceAnnulus from GeoDisks: drawing a ring on a mapNegative Correlation DistanceFind distance along a path (GPS coordinates)Finding position at given distance in a GeoPathMathematics behind distance estimation using camera

How to get a smooth, uniform ParametricPlot of a 2D Region?How to plot a complicated Region?How to exclude a region from ParametricPlotHow discretize a region placing vertices on a specific non-uniform gridHow to transform a Plot or a ParametricPlot into a RegionHow can I get a smooth plot of a bounded region?Smooth ParametricPlot3D with RegionFunction?Smooth border of a region ParametricPlotSmooth region boundarySmooth region plot from list of pointsGet minimum y of a certain x in a region

Genealogie vun de Merowenger Vum Merowech bis zum Chilperich I. | Navigatiounsmenü