我正在尝试为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)
谢谢
我试图从维基百科主页中提取所有链接,但此代码显示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) 我在 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) 我正在重写旧系统的异常,一切正常,但我需要进行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(并传递值)只是为了比较一个字符串。知道如何读取静态值的配置值吗?