Excluding Application Event Listener in testing?
I am facing problem in figuring this out.
I am using caching in my application and loading it on application startup using Listeners.
@EventListener(ApplicationReadyEvent.class)
public void LoadCache() {
refreshCache();
}
public void refreshCache() {
clearCache(); // clears cache if present
populateCache();
}
public void populateCache() {
// dao call to get values to be populated in cache
List<Game> games = gamesDao.findAllGames();
// some method to populate these games in cache.
}
This works all fine when I am running the application. The problem however occurs when I run the test cases, the LoadCache()
is being called when the setup is being run. I don't want this to run while the tests are being executed.
This is a sample test case
@RunWith(SpringRunner.class)
@SpringBootTest(classes = GameServiceApplication.class)
public class GameEngineTest {
@Test
public void testSomeMethod() {
// some logic
}
}
spring-boot events caching junit
add a comment |
I am facing problem in figuring this out.
I am using caching in my application and loading it on application startup using Listeners.
@EventListener(ApplicationReadyEvent.class)
public void LoadCache() {
refreshCache();
}
public void refreshCache() {
clearCache(); // clears cache if present
populateCache();
}
public void populateCache() {
// dao call to get values to be populated in cache
List<Game> games = gamesDao.findAllGames();
// some method to populate these games in cache.
}
This works all fine when I am running the application. The problem however occurs when I run the test cases, the LoadCache()
is being called when the setup is being run. I don't want this to run while the tests are being executed.
This is a sample test case
@RunWith(SpringRunner.class)
@SpringBootTest(classes = GameServiceApplication.class)
public class GameEngineTest {
@Test
public void testSomeMethod() {
// some logic
}
}
spring-boot events caching junit
What type of testing are you using?
– Jonathan Johx
Nov 27 '18 at 20:40
Junits, I have added a sample test case to the question
– Akshaya Kumar T
Nov 28 '18 at 3:16
It's OK do you want to exclude a class or a method?
– Jonathan Johx
Nov 28 '18 at 4:32
I want to exclude LoadCache() method
– Akshaya Kumar T
Nov 28 '18 at 6:51
add a comment |
I am facing problem in figuring this out.
I am using caching in my application and loading it on application startup using Listeners.
@EventListener(ApplicationReadyEvent.class)
public void LoadCache() {
refreshCache();
}
public void refreshCache() {
clearCache(); // clears cache if present
populateCache();
}
public void populateCache() {
// dao call to get values to be populated in cache
List<Game> games = gamesDao.findAllGames();
// some method to populate these games in cache.
}
This works all fine when I am running the application. The problem however occurs when I run the test cases, the LoadCache()
is being called when the setup is being run. I don't want this to run while the tests are being executed.
This is a sample test case
@RunWith(SpringRunner.class)
@SpringBootTest(classes = GameServiceApplication.class)
public class GameEngineTest {
@Test
public void testSomeMethod() {
// some logic
}
}
spring-boot events caching junit
I am facing problem in figuring this out.
I am using caching in my application and loading it on application startup using Listeners.
@EventListener(ApplicationReadyEvent.class)
public void LoadCache() {
refreshCache();
}
public void refreshCache() {
clearCache(); // clears cache if present
populateCache();
}
public void populateCache() {
// dao call to get values to be populated in cache
List<Game> games = gamesDao.findAllGames();
// some method to populate these games in cache.
}
This works all fine when I am running the application. The problem however occurs when I run the test cases, the LoadCache()
is being called when the setup is being run. I don't want this to run while the tests are being executed.
This is a sample test case
@RunWith(SpringRunner.class)
@SpringBootTest(classes = GameServiceApplication.class)
public class GameEngineTest {
@Test
public void testSomeMethod() {
// some logic
}
}
spring-boot events caching junit
spring-boot events caching junit
edited Nov 28 '18 at 3:15
Akshaya Kumar T
asked Nov 27 '18 at 16:33
Akshaya Kumar TAkshaya Kumar T
2419
2419
What type of testing are you using?
– Jonathan Johx
Nov 27 '18 at 20:40
Junits, I have added a sample test case to the question
– Akshaya Kumar T
Nov 28 '18 at 3:16
It's OK do you want to exclude a class or a method?
– Jonathan Johx
Nov 28 '18 at 4:32
I want to exclude LoadCache() method
– Akshaya Kumar T
Nov 28 '18 at 6:51
add a comment |
What type of testing are you using?
– Jonathan Johx
Nov 27 '18 at 20:40
Junits, I have added a sample test case to the question
– Akshaya Kumar T
Nov 28 '18 at 3:16
It's OK do you want to exclude a class or a method?
– Jonathan Johx
Nov 28 '18 at 4:32
I want to exclude LoadCache() method
– Akshaya Kumar T
Nov 28 '18 at 6:51
What type of testing are you using?
– Jonathan Johx
Nov 27 '18 at 20:40
What type of testing are you using?
– Jonathan Johx
Nov 27 '18 at 20:40
Junits, I have added a sample test case to the question
– Akshaya Kumar T
Nov 28 '18 at 3:16
Junits, I have added a sample test case to the question
– Akshaya Kumar T
Nov 28 '18 at 3:16
It's OK do you want to exclude a class or a method?
– Jonathan Johx
Nov 28 '18 at 4:32
It's OK do you want to exclude a class or a method?
– Jonathan Johx
Nov 28 '18 at 4:32
I want to exclude LoadCache() method
– Akshaya Kumar T
Nov 28 '18 at 6:51
I want to exclude LoadCache() method
– Akshaya Kumar T
Nov 28 '18 at 6:51
add a comment |
1 Answer
1
active
oldest
votes
If you can move your EventListener in a separate class and make it as Bean, then you can use mockBean in your tests to mock a real implementation.
@Component
public class Listener {
@Autowired
private CacheService cacheService;
@EventListener(ApplicationReadyEvent.class)
public void LoadCache() {
cacheService.refreshCache();
}
}
@Service
public class CacheService {
...
public void refreshCache() {
..
}
public void populateCache() {
..
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class CacheServiceTest {
@MockBean
private Listener listener;
@Test
public void test() {
// now the listener mocked and an event not received.
}
}
or you can use profiles to run this listener only in production mode.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
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: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53504161%2fexcluding-application-event-listener-in-testing%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you can move your EventListener in a separate class and make it as Bean, then you can use mockBean in your tests to mock a real implementation.
@Component
public class Listener {
@Autowired
private CacheService cacheService;
@EventListener(ApplicationReadyEvent.class)
public void LoadCache() {
cacheService.refreshCache();
}
}
@Service
public class CacheService {
...
public void refreshCache() {
..
}
public void populateCache() {
..
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class CacheServiceTest {
@MockBean
private Listener listener;
@Test
public void test() {
// now the listener mocked and an event not received.
}
}
or you can use profiles to run this listener only in production mode.
add a comment |
If you can move your EventListener in a separate class and make it as Bean, then you can use mockBean in your tests to mock a real implementation.
@Component
public class Listener {
@Autowired
private CacheService cacheService;
@EventListener(ApplicationReadyEvent.class)
public void LoadCache() {
cacheService.refreshCache();
}
}
@Service
public class CacheService {
...
public void refreshCache() {
..
}
public void populateCache() {
..
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class CacheServiceTest {
@MockBean
private Listener listener;
@Test
public void test() {
// now the listener mocked and an event not received.
}
}
or you can use profiles to run this listener only in production mode.
add a comment |
If you can move your EventListener in a separate class and make it as Bean, then you can use mockBean in your tests to mock a real implementation.
@Component
public class Listener {
@Autowired
private CacheService cacheService;
@EventListener(ApplicationReadyEvent.class)
public void LoadCache() {
cacheService.refreshCache();
}
}
@Service
public class CacheService {
...
public void refreshCache() {
..
}
public void populateCache() {
..
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class CacheServiceTest {
@MockBean
private Listener listener;
@Test
public void test() {
// now the listener mocked and an event not received.
}
}
or you can use profiles to run this listener only in production mode.
If you can move your EventListener in a separate class and make it as Bean, then you can use mockBean in your tests to mock a real implementation.
@Component
public class Listener {
@Autowired
private CacheService cacheService;
@EventListener(ApplicationReadyEvent.class)
public void LoadCache() {
cacheService.refreshCache();
}
}
@Service
public class CacheService {
...
public void refreshCache() {
..
}
public void populateCache() {
..
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class CacheServiceTest {
@MockBean
private Listener listener;
@Test
public void test() {
// now the listener mocked and an event not received.
}
}
or you can use profiles to run this listener only in production mode.
answered Nov 28 '18 at 11:51
Anatoliy KorovinAnatoliy Korovin
1065
1065
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- 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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53504161%2fexcluding-application-event-listener-in-testing%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
What type of testing are you using?
– Jonathan Johx
Nov 27 '18 at 20:40
Junits, I have added a sample test case to the question
– Akshaya Kumar T
Nov 28 '18 at 3:16
It's OK do you want to exclude a class or a method?
– Jonathan Johx
Nov 28 '18 at 4:32
I want to exclude LoadCache() method
– Akshaya Kumar T
Nov 28 '18 at 6:51