This Spring Boot app returns a message from configuration. When run with the test profile active, it shows the test message. Otherwise, it shows the default message.
Spring Boot
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@RestController
class ProfileController {
@Value("${app.message}")
private String message;
@GetMapping("/message")
public String getMessage() {
return message;
}
}
// application.properties
// app.message=Hello from default profile
// application-test.properties
// app.message=Hello from test profile
OutputSuccess
Important Notes
Activate profiles in application.properties or via command line with --spring.profiles.active=test.
Use @ActiveProfiles in tests to specify which profile to use.
Keep test configurations simple and isolated to avoid affecting real app behavior.
Summary
Test profiles let you run your app with special settings just for tests.
Use application-{profile}.properties files to separate settings.
Activate profiles via config files, command line, or annotations in tests.
Practice
(1/5)
1. What is the main purpose of using test profiles in a Spring Boot application?
easy
A. To run the application with special settings only during testing
B. To improve the application's runtime performance in production
C. To automatically generate test data for the application
D. To disable security features permanently
Solution
Step 1: Understand test profiles concept
Test profiles allow running the app with different settings specifically for testing purposes.
Step 2: Compare options
Only To run the application with special settings only during testing correctly describes the purpose of test profiles as special settings for tests.
Final Answer:
To run the application with special settings only during testing -> Option A
Quick Check:
Test profiles = special test settings [OK]
Hint: Test profiles isolate test settings from production [OK]
Common Mistakes:
Confusing test profiles with performance tuning
Thinking test profiles generate test data automatically
Assuming test profiles disable security permanently
2. Which of the following is the correct way to name a properties file for a test profile named testdb?
easy
A. application.properties.testdb
B. testdb-application.properties
C. application-testdb.properties
D. application_testdb.properties
Solution
Step 1: Recall Spring Boot profile file naming
Spring Boot uses the pattern application-{profile}.properties for profile-specific config files.
Step 2: Match the pattern with the profile name
For profile testdb, the correct file name is application-testdb.properties.
Hint: Use application-{profile}.properties naming [OK]
Common Mistakes:
Placing profile name after .properties
Using underscores instead of hyphens
Reversing the order of profile and application
3. Given the following test class annotation: @ActiveProfiles("test") and two property files: application.properties with db.url=prod-db application-test.properties with db.url=test-db What will be the value of db.url during this test?
medium
A. prod-db
B. test-db
C. null
D. application.properties
Solution
Step 1: Understand @ActiveProfiles effect
@ActiveProfiles("test") activates the 'test' profile for the test run.
Step 2: Determine property file precedence
Properties in application-test.properties override those in application.properties when 'test' profile is active.
Final Answer:
test-db -> Option B
Quick Check:
Active profile properties override default [OK]
Hint: Active profile properties override defaults [OK]
Common Mistakes:
Assuming default properties always apply
Confusing profile name in annotation
Expecting null if profile is active
4. You have a test annotated with @ActiveProfiles("dev") but the test still uses properties from application.properties instead of application-dev.properties. What is the most likely cause?
medium
A. The test class must extend a special base class to use profiles
B. The @ActiveProfiles annotation is only for production
C. Spring Boot does not support multiple profiles
D. The application-dev.properties file is missing or misnamed
Solution
Step 1: Check profile file presence
If application-dev.properties is missing or named incorrectly, Spring Boot falls back to application.properties.
Step 2: Verify annotation usage
@ActiveProfiles works for tests to activate profiles; it is not limited to production.
Final Answer:
The application-dev.properties file is missing or misnamed -> Option D
Quick Check:
Missing profile file causes fallback to default [OK]
Hint: Check profile file name and location first [OK]
Common Mistakes:
Thinking @ActiveProfiles is ignored in tests
Believing Spring Boot lacks profile support
Assuming inheritance is required for profiles
5. You want to run integration tests with a profile integration that uses a different database URL and disables security. Which combination correctly activates this profile and overrides the default settings?
hard
A. Create application-integration.properties with overrides and annotate tests with @ActiveProfiles("integration")
B. Add spring.profiles.active=integration only in application.properties
C. Use @Profile("integration") on the test class without any properties file
D. Set environment variable SPRING_PROFILE=integration but keep default properties unchanged
Solution
Step 1: Use profile-specific properties file
Create application-integration.properties to override database URL and security settings for the integration profile.
Step 2: Activate profile in tests
Annotate tests with @ActiveProfiles("integration") to activate the profile during test runs.
Final Answer:
Create application-integration.properties with overrides and annotate tests with @ActiveProfiles("integration") -> Option A
Quick Check:
Profile file + @ActiveProfiles activates test config [OK]
Hint: Use profile file plus @ActiveProfiles to activate [OK]
Common Mistakes:
Setting active profile only in default properties
Using @Profile instead of @ActiveProfiles on tests
Relying on environment variable without config changes
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.