我使用Spring Initializr生成了一个Spring Bootweb应用程序,使用嵌入式Tomcat+Thymeleaf模板引擎,并将其打包为一个可执行的JAR文件。
@ContextConfiguration(classes={TestPersistenceConfig.class})
@RunWith(SpringRunner.class)
@SpringBootTest
public class JdbcRemoteUnitRepositoryTests {
@Autowired
private JdbcRemoteUnitRepository repository;
@Autowired
@InjectMocks
private SmsConfig smsConfig;
@Autowired
@InjectMocks
private NextelSMSSender smsService;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testGetAllUnits() throws DataAccessException, SQLException {
Assert.assertTrue(true);
}
}
类NexTelsMSSender:
@Service("smsService")
public class NextelSMSSender {
public final static String OK_STATUS_CODE = "200";
@Autowired
SmsConfig smsConfig;
..
}
.
@Configuration
@PropertySource("sms-gateway.properties")
public class SmsConfig {
@Value("${sms.domainId}")
private String domainId;
@Value("${sms.gateway.url}")
private String gatewayUrl;
..
}
但这似乎并不是在嘲弄对象属性,因为当我打包应用程序时。我有一个错误:
***************************
APPLICATION FAILED TO START
***************************
Description:
Field smsConfig in com.plats.bruts.NextelSMSSender required a bean of type 'com.plats.bruts.config.SmsConfig' that could not be found.
Action:
Consider defining a bean of type 'com.plats.bruts.config.SmsConfig' in your configuration.
The annotation @Bean is disallowed for this
location
@Configuration
@Bean
public class TestSmsConfig {
@Value("fake.domainId")
private String domainId;
@Value("fake.sms.gateway.url")
private String gatewayUrl;
...
}
您正在自动生成smsConfig,但似乎没有在测试应用程序上下文中提供@bean。
此外,您不正确地使用了@InjectMocks-这应该用于将模拟对象注入到测试中的类(您的NextelSMSSender类,而不是SmsConfig)中。
要解决这个问题,请在配置类中添加一个@bean方法,以提供SmsConfig bean实例。
有关更多信息,请参见弹簧引导测试功能的第41.3.4节:
Spring Boot包含一个@mockbean注释,可用于为ApplicationContext中的bean定义一个Mockito模拟。您可以使用注释添加新的bean,或者替换单个现有的bean定义。注释可以直接用于测试类、测试中的字段或@Configuration类和字段。在字段上使用时,创建的mock的实例也将被注入。模拟豆在每次测试方法后自动重置。
当我尝试用PowerMock和Mockito测试一个方法并模拟它的依赖关系时遇到了问题。我尝试将依赖关系方法转换为非静态方法,并使用@mock注释和@injectmocks,但没有任何结果。 下面是正在测试的类和方法: 这里有一个我想要嘲弄的依赖关系,我很难嘲弄它: 最后,但不是最不重要的是,使用失败的测试方法的测试类。我不得不说,它甚至没有到达assert方法调用,而是在when().ThenR
本节介绍与JUnit Framework相关的各种模拟测试。 您可以在本地计算机上下载这些示例模拟测试,并在方便时离线解决。 每个模拟测试都提供一个模拟测试密钥,让您自己验证最终得分和评分。 JUnit Mock Test I 问题1 - 以下哪项描述正确测试? A - 测试是检查应用程序功能的过程,是否按照要求运行。 B - 测试是单个实体(类或方法)的测试。 C - 以上两者。 D - 以上都
我试图编写一些基本的backingBean测试,但我一直在模仿UserContext和facesContext。 此代码在我尝试测试的代码中: 在另一段代码中,我得到了以下内容: 如何在标准jUnit测试中仅使用mockito来模拟这些?还是必须使用PowerMock之类的工具?
问题内容: 我在源代码中使用了BufferedWriter对象 我正在尝试在我的测试用例中模拟它,如下所示: 但是,BufferedWriter不会被嘲笑,它总是进入实际的实现中。是因为它不能模拟BufferedWriter,因为它是一个具体的类吗?这是否意味着无法模拟任何java.io类?有没有办法模拟它,或者我做错了什么? 问题答案: ,你可以嘲笑的Java IO类(包括它们的构造,所以未来的
问题内容: 我有一个Java命令行程序。我想创建JUnit测试用例以进行模拟。因为当我的程序运行时,它将进入while循环并等待用户输入。如何在JUnit中模拟呢? 问题答案: 从技术上讲,可以进行切换,但是总的来说,不直接在代码中调用它,而是添加一层间接层,这样输入源就可以从应用程序的某个位置进行控制,这样会更健壮。确切地讲,这是实现的详细信息-依赖项注入的建议很好,但是你不一定需要引入第三方框
在我的实现类中,我有一个读写锁定义,如下所示, 我在一个名为的方法中使用它, 正如我所说的,是null,但是rwLock是初始化的。请解释Mockito是如何发生这种情况的。理想的方法是什么?