第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何避免在測(cè)試期間調(diào)用 Spring AOP 方面

如何避免在測(cè)試期間調(diào)用 Spring AOP 方面

慕萊塢森 2023-09-06 15:46:55
我需要避免在對(duì)類進(jìn)行單元測(cè)試時(shí)調(diào)用某個(gè)方面。我正在使用 Java 8、spring 4.3.22.RELEASE 和mockito。我有一個(gè)@Service 和一個(gè)單元測(cè)試。我還有一個(gè) @Aspect,它在服務(wù)中的方法上定義了切入點(diǎn),并且當(dāng)我運(yùn)行我的應(yīng)用程序時(shí)它工作正常。問(wèn)題是,當(dāng)我運(yùn)行單元測(cè)試時(shí),會(huì)調(diào)用該方面,并由于該方面缺少依賴項(xiàng)而引發(fā) NullPointerException。服務(wù)等級(jí):@Servicepublic class ContactService {    @Autowired    public InContactService(ContactDao contactDao) {        this.contactDao = contactDao;    }    public boolean muteCall(Long contactId) {        return contactDao.muteCall(contactId);    }}服務(wù)測(cè)試:public class ContactServiceTest {  @Mock  private ContactDao contactDao;  private ContactService contactService;  @Before  public void setUp(){    MockitoAnnotations.initMocks(this);    contactService = new ContactService(contactDao);  }  @Test  public void testMuteCall(){    contactService.muteCall(1L);  }}方面:@Aspectpublic class ContactAspect {    private MeterRegistry registry;    public void setRegistry(MeterRegistry registry) {        this.registry = registry;    }    @AfterReturning(pointcut = "execution(* com.company.ContactService.muteCall(..))", returning = "retVal")    public void checkReturnContactServiceMuteCall(JoinPoint joinPoint, boolean retVal) {        Object[] args = joinPoint.getArgs();      registry.counter("my.metric.mute_call").increment();    }}應(yīng)用背景:@Configurationpublic class ApplicationContext {    @Bean    public MeterRegistry meterRegistry() {      return new SimpleMeterRegistry();    }    @Bean    public ContactAspect contactAspect() {        ContactAspect aspect =   Aspects.aspectOf(ContactAspect.class);        aspect.setRegistry(meterRegistry());        return aspect;    }}我預(yù)計(jì)當(dāng)測(cè)試運(yùn)行時(shí)不會(huì)調(diào)用方面。目前,當(dāng)我運(yùn)行測(cè)試時(shí),我收到 NullPointerException,因?yàn)閞egistry方面未定義。
查看完整描述

3 回答

?
開(kāi)心每一天1111

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊

我們遇到了同樣的問(wèn)題,并通過(guò)在運(yùn)行測(cè)試時(shí)禁用屬性來(lái)修復(fù)它。


import org.aspectj.lang.annotation.Aspect;

import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;


@Aspect

@ConditionalOnExpression("${aspect.property.enabled:true}")

public class AspectClass {

測(cè)試/資源/application.properties


aspect.property.enabled=false


查看完整回答
反對(duì) 回復(fù) 2023-09-06
?
滄海一幻覺(jué)

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊

最好的方法是使用 Spring 配置文件,它允許您有不同的運(yùn)行方案。

查看完整回答
反對(duì) 回復(fù) 2023-09-06
?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊

我在遺留代碼中遇到了這個(gè)問(wèn)題,我想向其中添加集成測(cè)試,但不需要或不希望調(diào)用這些方面。

您的上下文配置中很可能有某個(gè)地方告訴應(yīng)用程序啟用方面。無(wú)論它在哪里,找到它并禁用它。

就我而言,配置是基于 XML 的,因此在applicationContext-services-integration-test.xml為集成測(cè)試加載的文件中,我注釋掉了它 <aop:aspectj-autoproxy />,它繞過(guò)了我的測(cè)試的所有方面。

干杯!


查看完整回答
反對(duì) 回復(fù) 2023-09-06
  • 3 回答
  • 0 關(guān)注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)