小编pr0*_*ist的帖子

单元测试Android,来自资源的getString

我正在尝试为Android应用程序进行单元测试,我需要从res.string资源获取一个字符串.我想测试的类是POJO类.我正在用两种语言做应用程序,因此,我需要从资源中获取一个字符串.问题是我无法获得上下文或活动,是否可能?我知道使用Instrumentation测试我可以做到,但我需要在进行仪器测试(黑盒测试)之前测试一些功能(白盒测试).这是我必须测试的功能:

public void setDiaByText(String textView) {
    getll_diaSeleccionado().clear();
    if (textView.contains(context.getResources().getString(R.string.sInicialLunes))) {
        getll_diaSeleccionado().add(0);
        getIsSelectedArray()[0] = true;
        getI_idiaSeleccionado()[0] =1;

    } else
    {
        getIsSelectedArray()[0] = false;
        getI_idiaSeleccionado()[0] =0;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是测试:

@Test
public void setDiaByTextView() {
    String texto = "L,M,X,J,V,S,D";

    alertaPOJO.setDiaByText(texto);

    assertEquals(alertaPOJO.getIsSelectedArray()[0], true);
    assertEquals(alertaPOJO.getI_idiaSeleccionado()[0], 1);
}
Run Code Online (Sandbox Code Playgroud)

尝试时会崩溃 context.getResources().getString(R.string.sInicialLunes))

如果我把'Mon'代替context.getResources().getString(R.string.sInicialLunes))或'L'它完全正常工作,是否可以获取上下文或活动以访问资源文件夹?

我正在使用Mockito进行测试,setUp函数是:

@Before
public void setUp() throws Exception {

    MockitoAnnotations.initMocks(this);
    mContext = Mockito.mock(Alerta.class);
    Mockito.when(mContext.getApplicationContext()).thenReturn(mContext);

    alertaPOJO = new AlertaPOJO();
}
Run Code Online (Sandbox Code Playgroud)

谢谢

testing junit android mockito

12
推荐指数
4
解决办法
1万
查看次数

TypeError:'WebElement'对象不是可迭代的错误

我试图从维基百科主页中提取所有链接,但此代码显示TypeError:'WebElement'对象不是可迭代错误.

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

browser=webdriver.Chrome()
browser.get('https://en.wikipedia.org/wiki/Main_Page')
search=[]
search=browser.find_element_by_xpath('//*[@href]')


for ii in search:
  print(ii.get_attribute('href'))

time.sleep(4)
browser.close()  
Run Code Online (Sandbox Code Playgroud)

python selenium-chromedriver

11
推荐指数
2
解决办法
3万
查看次数

如何在Android RecyclerView适配器中过滤后获取原始项目位置?

我在 android recyclerview 适配器中实现了过滤器。但问题是,当我过滤项目时,项目的位置发生了变化。我需要过滤后项目的原始位置?我怎么才能得到它?

这是我的代码:

public class SearchAdapter extends SelectableAdapter<SearchAdapter.ViewHolder> implements Filterable {

    static ArrayList<SingleHadishDisplayModel> singleHadishDisplayModels;
    ArrayList<SingleHadishDisplayModel> singleHadishDisplayModelsFilter;
    public ViewHolder.ClickListener clickListener;

    Context context;

    public SearchAdapter(ArrayList<SingleHadishDisplayModel> singleHadishDisplayModels) {
        this.singleHadishDisplayModelsFilter = singleHadishDisplayModels;
        if (singleHadishDisplayModels != null) {
            this.singleHadishDisplayModels = new ArrayList<>(singleHadishDisplayModels);
        } else {
            this.singleHadishDisplayModels = null;
        }
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        context = parent.getContext();
        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.search_adapter, parent, false);

        ViewHolder vh = new ViewHolder(v, clickListener);
        return vh;
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, …
Run Code Online (Sandbox Code Playgroud)

android android-filter android-recyclerview

5
推荐指数
1
解决办法
2325
查看次数

如何在Quarkus中获取静态值的配置值

我正在重写旧系统的异常,一切正常,但我需要进行BAD_REQUEST配置。

private static final String BAD_REQUEST = "BDRQ";
Run Code Online (Sandbox Code Playgroud)

我尝试只放置 ConfigProperty,但它不起作用。

import javax.ws.rs.core.Response.Status;
import org.eclipse.microprofile.config.inject.ConfigProperty;

public class SXClientException extends RuntimeException {
  @ConfigProperty(name = "greeting.error", defaultValue = "BDRQ")
  public String BAD_REQUEST;

  private final RuntimeException runtimeException;

  public SXClientException(RuntimeException e) {
    super(e);

    this.runtimeException = e;
  }

  public Status getStatus() {
    if (BAD_REQUEST.equals(runtimeException.getMessage())) {
      return Status.BAD_REQUEST;
    }
    return Status.INTERNAL_SERVER_ERROR;
  }

  // ...
}
Run Code Online (Sandbox Code Playgroud)

它可能不起作用,因为我在没有任何 CDI 的情况下制作它们。

catch (LegacyOMException e) {
    throw new SXClientException(e);
}
Run Code Online (Sandbox Code Playgroud)

我宁愿避免创建另一个 bean(并传递值)只是为了比较一个字符串。知道如何读取静态值的配置值吗?

java configuration microprofile quarkus

5
推荐指数
2
解决办法
4886
查看次数