Spring:在Junit中加载的类中自动化不同的类

时间:2017-10-25 03:27:28

标签: java spring junit autowired

我在Spring中有以下场景:

public class ClassA{

@Autowired
private ClassB classB;
}

我在我的Test类中使用(自动装配更精确)ClassA。但我想以某种方式做的只是为我的Junit修改ClassB,因此,当我的测试类中自动装配ClassA时,它会加载修改后的ClassB (而不是原来的。)

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

如果没有Bean配置,不能想到另一种方法。 您可以通过两种方式配置它:

<强>首先

<template>
  <div class="container">
        <div class="row">
              <div class="col-md-8 col-md-offset-2">
                    <div class="panel panel-default">
                    <div class="panel-body">
                          <textarea rows="3" class="form-control" v-model="content"></textarea>
                          <br>
                          <button class="btn btn-success pull-right" :disabled="not_working" @click="create_post()">
                                Create a post
                          </button>
                    </div>
                    </div>
              </div>
        </div>
  </div>
</template>

<script>
  export default {
        mounted() {

        },
        data() {
              return {
                    content: '',
                    not_working: true
              }
        },
        methods: {
              create_post() {
                    this.$http.post('/create/post', { content:          this.content })
                        .then((resp) => {
                              this.content = ''
                              noty({
                                      type: 'success',
                                      layout: 'bottomLeft',
                                      text: 'Your post has been   published !'
                              })
                              console.log(resp)
                        })
              }
        },
        watch: {
              content() {
                    if(this.content.length > 0)
                          this.not_working = false
                    else
                          this.not_working = true
              }
        }

  }
</script>

第二名:(摘自here

@Configuration
public class AppConfig {

  @Bean
  public ClassB classB() {
    return new ClassB() {
      // this is a subclass that inherits everything from ClassB, so override what you want here
    }
  }
}

最后,您可以在主文件夹中创建一个新界面@RunWith(SpringRunner.class) @SpringBootTest public class SomeTest { // do this if you only want the modified classB in 1 place @Configuration static class TestConfig { @Bean public ClassB classB () { return new ClassB() { // same as the first } } } @Test public void testMethod() { // test } } ClassB,并在测试文件夹中创建ClassBImpl。您仍然需要使用其中一个配置。